我有一个tableview,我在其单元格中插入了一个segue。我想给出一个条件,启用或禁用单元格。
这是didSelectRowAtIndexpath
if (condition) {
NSLog(@"Nothing);
} else {
[self performSegueWithIdentifier:@"segueName" sender:tableView];
}
但是每次都会调用segue,即使我看到NSLog
打印出来。
这里的一些答案说我应该将segue放在视图控制器中,但在故事板中我不能这样做,我只能将它放入单元格中。
我错过了什么?
答案 0 :(得分:3)
在Interface Builder中,您是否还有从单元格到下一个场景的segue?如果是这样,那么无论didSelectRowAtIndexPath
做什么,都会调用它。
有两种方法可以:
如果只支持iOS 6,你可以完全消除didSelectRowAtIndexPath
,将segue放在单元格和下一个场景之间,然后实现shouldPerformSegueWithIdentifier
并将条件逻辑放在那里,例如< / p>
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
{
if ([identifier isEqualToString:@"segueName"])
{
if (condition)
return NO;
}
return YES;
}
如果你需要与iOS 5兼容,你应该删除单元格和下一个场景之间的segue,但是它应该在视图控制器之间移动(即你从 control -drag)首先在场景底部的栏中查看控制器的图标到下一个场景)。这样,segue被定义,但没有连接到单元格。您的didSelectRowAtIndexPath
可以使用您在问题中建议的条件逻辑: