我遇到了問題,我的tableView沒有觸發didSelectRowAtIndexPath方法。我已經實現了這樣的代表:didSelectRowAtIndexPath不工作
@interface ViewController : UIViewController<UITableViewDataSource, UITableViewDelegate,UIScrollViewDelegate>
而在我的故事板中,tableView的數據源和委託都指向基本View Controller。我啓用了「用戶交互」功能,並將「選擇」設置爲「單選」,但這不是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),那麼當在用戶點擊按鈕在導航欄中,視圖滑過以顯示它,這可能會導致我認爲的問題。
我的代碼或實現有什麼問題會導致這不起作用?
大概是一個明顯的問題,但你肯定你已經同時設置了代理和的tableView的數據源? – cobbal
@cobbal是啊我將它們連接到視圖控制器的故事板,並在.h文件中實現它們 – gta0004
在您的didSelectRowAtIndexPath方法中添加'[tableView deselectRowAtIndexPath:indexPath];''。如果在您擡起手指時取消選擇該行,問題出在您的'changeImage:'方法中。 – Jsdodgers