我有一个表格 View ,并且在其单元格中插入了一个segue。我想要给定一个条件,以启用或禁用单元格。
这是我在 didSelectRowAtIndexpath
if (condition) {
NSLog(@"Nothing);
} else {
[self performSegueWithIdentifier:@"segueName" sender:tableView];
}
但是每次都会调用 segue,即使我确实看到打印了 NSLog
。
这里的一些答案说我应该将segue放在 View Controller 中,但在 Storyboard中我不能这样做,我只能将它放入单元格中。
我错过了什么?
最佳答案
Interface Builder 中是否还有从单元格到下一个场景的转场?如果是这样,无论 didSelectRowAtIndexPath
做什么,都会调用它。
有两种可能的方法:
如果仅限 iOS 6,您可以完全消除
didSelectRowAtIndexPath
,在单元格和下一个场景之间放置转场,然后实现shouldPerformSegueWithIdentifier
并将条件逻辑放在那里,例如- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender { if ([identifier isEqualToString:@"segueName"]) { if (condition) return NO; } return YES; }
如果您需要与 iOS 5 兼容,您应该删除单元格和下一个场景之间的 Segue,但将其放在 View Controller 之间(即,您从 View Controller 中 control 拖动)从场景底部栏中的第一个 View Controller 的图标到下一个场景)。这样,segue 就被定义了,但没有连接到单元格。并且您的
didSelectRowAtIndexPath
可以使用您在问题中建议的条件逻辑:
关于ios - 每次都会调用表格单元格中的 segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14531500/