我在 viewController
中有两个 UITableView
。两者都有不同的标签。带有标签 0 的 UITableview
是可编辑的,而标签 1 是不可编辑的。我的问题是当在带有标签 1 的 UITableview
中选择行时,它没有被调用。但是当我滑动 didSelectRowAtIndexPath
时,标签 1 被调用。
这是我的代码,
- (BOOL) tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView.tag == 0) {
return YES;
}
else if (tableView.tag == 1)
{
return NO;
}
return NO;
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView.tag == 0)
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
//My stuff
}
}
else editingStyle = UITableViewCellEditingStyleNone;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView.tag == 1)
{
switch (indexPath.row)
{
case 0:
[self.navigationController popToRootViewControllerAnimated:YES];
break;
case 1:
[self performSegueWithIdentifier:@"mapPageSegue" sender:nil];
break;
case 2:
[self closeMenuTable];
[self listenMusic];
break;
default:
break;
}
}
}
最佳答案
根据您的评论,我猜您没有设置 UITableViewDelegate
,因为 tableView:didSelectRowAtIndexPath:
是该协议(protocol)的一种方法。
无论如何,我会设置一个断点并进行调试。这才是深入问题的正确方法。
此外,我不依赖于 tag
,而是依赖于两个表的引用(通过 IB 导出、属性或 ivar)。例如。
if(tableView == self.myFirstTable) {
// do stuff here
} else {
// do other stuff here
}
关于iOS:未调用 didSelectRowAtIndexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20998346/