У меня возникли проблемы с моей таблицей, не запускающей метод didSelectRowAtIndexPath. Я осуществил делегат как таковые:didSelectRowAtIndexPath не работает
@interface ViewController : UIViewController<UITableViewDataSource, UITableViewDelegate,UIScrollViewDelegate>
И в моей раскадровке источник данных в Tableview и делегат оба указали на базе View Controller. У меня есть взаимодействие с пользователем, а также выбор, выделенный для Single Selection, и это не проблема TapGesture, поскольку мои жесты касания не привязаны к представлению, и я проверил, и они не срабатывают.
Это код для создания таблицы:
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return menuArray.count;
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"menuCell"];
NSDictionary *menuItem = [menuArray objectAtIndex:indexPath.row];
cell.textLabel.text = menuItem[@"Title"];
cell.detailTextLabel.text = menuItem[@"Subtitle"];
return cell;
}
-(void)showMenu{
[UIView animateWithDuration:.25 animations:^{
[content setFrame:CGRectMake(menuTable.frame.size.width, content.frame.origin.y, content.frame.size.width, content.frame.size.height)];
}];
}
-(void)hideMenu{
[UIView animateWithDuration:.25 animations:^{
[content setFrame:CGRectMake(0, content.frame.origin.y, content.frame.size.width, content.frame.size.height)];
}];
}
-(IBAction)showMenuDown:(id)sender {
if(content.frame.origin.x == 0)
[self showMenu];
else
[self hideMenu];
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
//whatever
}
В таблице первоначально из поля зрения на раскадровке (origin.x установлен в -150), а затем, когда пользователь нажимает на кнопку в navigationBar представление скользит, чтобы выявить его, что может вызвать проблемы, которые я думаю.
Есть ли что-то не в порядке с моим кодом или реализацией, которая может привести к тому, что это не сработает?
Вероятно очевидный вопрос, но вы уверены, что вы установили как делегат и DataSource в Tableview? – cobbal
@cobbal да, я связал их в раскадровке с контроллером представления, и я реализовал их в файле .h – gta0004
добавьте '[tableView deselectRowAtIndexPath: indexPath];' в ваш метод didSelectRowAtIndexPath. Если строка отменяется при поднятии пальца, проблема заключается в методе 'changeImage:'. – Jsdodgers