根据XML返回,我不希望当前的segue
在UIButton touch上执行。
我知道我可以选择segue
我希望执行,但是如何让segue
不执行?或者至少不执行任何可用的segues
?
答案 0 :(得分:25)
如果您的部署目标是iOS 6.0或更高版本,则可以覆盖the -[UIViewController shouldPerformSegueWithIdentifier:sender:]
method以返回YES
(如果您要执行segue)和NO
(如果您不执行)。
如果您的部署目标早于iOS 6.0,则不会收到shouldPerformSegueWithIdentifier:sender:
消息。所以在你的故事板中,不要从按钮中绘制segue。而是从按钮的视图控制器中绘制segue并为segue指定标识符。将按钮连接到其视图控制器中的IBAction
。在操作中,检查是否要执行segue。如果您想要执行它,请发送自己performSegueWithIdentifier:sender:
,将您分配给标识符的标识符传递给故事板。
答案 1 :(得分:3)
Apple Developer Documentation有正确的方法来取消在StoryBoard中管理的segue:
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
例如:
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
if ([identifier isEqualToString:@"listPopover"]) {
if (self.listPopover == nil) {
// Allow the popover segue
return YES;
}
// Cancel the popover segue
return NO;
}
// Allow all other segues
return YES;
}
答案 2 :(得分:0)
查看此主题:See the demo
您可以在func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath)