我在UITableView
中有两个viewController
。两者都有不同的标签。带有标记0的UITableview
是可编辑的,而标记1是不可编辑的。我的问题是UITableview
中的标记为1的选择行,其未被调用。但是,当我轻扫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;
}
}
}
答案 0 :(得分:2)
根据您的评论,我猜您没有设置UITableViewDelegate
,因为tableView:didSelectRowAtIndexPath:
是该协议的一种方法。
无论如何,我会设置一个断点并进行调试。这是深入研究问题的正确方法。
此外,我不依赖于tag
,而是依赖于两个表的引用(通过IB出口,属性或ivars)。例如。
if(tableView == self.myFirstTable) {
// do stuff here
} else {
// do other stuff here
}