根据 XML 返回,我不希望当前segue
在 UIButton 触摸上执行。
我知道我可以选择segue
我想表演的,但是我怎么做一个segue
不表演?或者至少不执行任何可用的segues
?
如果您的部署目标是 iOS 6.0 或更高版本,如果您想要执行 segue 或者不执行,您可以覆盖要返回的-[UIViewController shouldPerformSegueWithIdentifier:sender:]
方法。YES
NO
如果您的部署目标早于 iOS 6.0,您将不会收到该shouldPerformSegueWithIdentifier:sender:
消息。所以在你的故事板中,不要从按钮中画出segue。相反,从按钮的视图控制器中绘制 segue 并给 segue 一个标识符。将按钮连接到IBAction
其视图控制器中的一个。在动作中,检查是否要执行转场。如果您想执行它,请发送给您自己performSegueWithIdentifier:sender:
,将您分配给故事板中 segue 的标识符传递给您。
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;
}
查看此线程:https ://stackoverflow.com/a/42161944/4791032
你可以检查它func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath)