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

时间:2013-01-25 22:41:53

标签: ios tableview segue uistoryboardsegue

我有一个tableview,我在其单元格中插入了一个segue。我想给出一个条件,启用或禁用单元格。

这是didSelectRowAtIndexpath

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

但是每次都会调用segue,即使我看到NSLog打印出来。

这里的一些答案说我应该将segue放在视图控制器中,但在故事板中我不能这样做,我只能将它放入单元格中。

我错过了什么?

1 个答案:

答案 0 :(得分:3)

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

有两种方法可以:

  1. 如果只支持iOS 6,你可以完全消除didSelectRowAtIndexPath,将segue放在单元格和下一个场景之间,然后实现shouldPerformSegueWithIdentifier并将条件逻辑放在那里,例如< / p>

    - (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
    {
        if ([identifier isEqualToString:@"segueName"])
        {
            if (condition)
                return NO;
        }
        return YES;
    }
    
  2. 如果你需要与iOS 5兼容,你应该删除单元格和下一个场景之间的segue,但是它应该在视图控制器之间移动(即你从 control -drag)首先在场景底部的栏中查看控制器的图标到下一个场景)。这样,segue被定义,但没有连接到单元格。您的didSelectRowAtIndexPath可以使用您在问题中建议的条件逻辑:

    segue between scenes