ios segue“取消”

时间:2012-01-24 20:06:47

标签: ios segue

根据XML返回,我不希望当前的segue在UIButton touch上执行。

我知道我可以选择segue我希望执行,但是如何让segue 执行?或者至少不执行任何可用的segues

3 个答案:

答案 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)

中查看