ios - 每次都会调用表格单元格中的 segue

标签 ios tableview segue uistoryboardsegue

我有一个表格 View ,并且在其单元格中插入了一个segue。我想要给定一个条件,以启用或禁用单元格。

这是我在 didSelectRowAtIndexpath

中的代码
if (condition) {
    NSLog(@"Nothing);
} else {
    [self performSegueWithIdentifier:@"segueName" sender:tableView];
}

但是每次都会调用 segue,即使我确实看到打印了 NSLog

这里的一些答案说我应该将segue放在 View Controller 中,但在 Storyboard中我不能这样做,我只能将它放入单元格中。

我错过了什么?

最佳答案

Interface Builder 中是否还有从单元格到下一个场景的转场?如果是这样,无论 didSelectRowAtIndexPath 做什么,都会调用它。

有两种可能的方法:

  1. 如果仅限 iOS 6,您可以完全消除 didSelectRowAtIndexPath,在单元格和下一个场景之间放置转场,然后实现 shouldPerformSegueWithIdentifier并将条件逻辑放在那里,例如

    - (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
    {
        if ([identifier isEqualToString:@"segueName"])
        {
            if (condition)
                return NO;
        }
        return YES;
    }
    
  2. 如果您需要与 iOS 5 兼容,您应该删除单元格和下一个场景之间的 Segue,但将其放在 View Controller 之间(即,您从 View Controller 中 control 拖动)从场景底部栏中的第一个 View Controller 的图标到下一个场景)。这样,segue 就被定义了,但没有连接到单元格。并且您的 didSelectRowAtIndexPath 可以使用您在问题中建议的条件逻辑:

    segue between scenes

关于ios - 每次都会调用表格单元格中的 segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14531500/

相关文章:

ios - 从管道读取 AV Assets

swift - 从 tableView 更改 DetailVC 中的标签

ios - NSIndexPath 以 1 开头

ios - 如何将 subview 添加到 Storyboard,然后使用 Segue 显示它

ios - 如何做循环和复杂的导航?

objective-c - 为什么我用 "CGMutablePathRef"方法得到相反的掩码

ios - Xcode 8 中奇怪的终端消息

ios - 删除索引路径错误处的行

iphone - 准备继续传递数据选择器

来自小键盘的 iOS 9/Swift 2 输入找不到键盘