根据XML返回的结果,当用户点击UIButton时,我不想执行当前的segue
。
我知道可以选择想要执行的segue
,但是如何让segue
不执行?或者至少不执行任何可用的segue
?
-[UIViewController shouldPerformSegueWithIdentifier:sender:]
方法,如果想执行segue就返回YES
,否则返回NO
。shouldPerformSegueWithIdentifier:sender:
消息。所以在你的storyboard中,不要从按钮上画连线。取而代之的是,从按钮的视图控制器上画连线,并给segue一个标识符。将按钮连接到其视图控制器中的一个IBAction
。在该操作中,检查是否要执行segue。如果要执行,发送自己 performSegueWithIdentifier:sender:
,并传递你在storyboard中分配给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;
}
shouldPerformSegueWithIdentifier:sender:
消息是在 iOS 6 中添加的,不会被在早期版本的 iOS 运行的设备发送。当发布这个问题时,iOS 6 尚未发布。 - rob mayoff看看这个线程:https://dev59.com/Fmsz5IYBdhLWcg3wLU12#42161944
你可以在func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath)
中检查它
[self performSegueWithIdentifier:@"myIdentifier" sender:self];
正确吗?Xcode 给了我一个SIGABRT
:( - Jacksonkr