从UITableViewCell到ViewController的工作无效

时间:2015-07-01 05:41:31

标签: ios swift uitableview segue

我在UITableViewCellUIViewController之间设置了一个segue。我的理解是,如果我将原型单元格中的Show segue设置为UIViewController,则在点击UIViewController中的一个单元格时会显示UITableView,但是&# 39;没有发生在我身上。让它工作的唯一方法是覆盖tableView didSelectRowAtIndexPath,然后调用performSegueWithIdentifier

为了测试这一点,我将一个快速项目与UITableViewControllerUIViewController组合在一起。当我在原型单元格和UIViewController之间创建一个segue时,它按照应有的方式工作。所以我知道这是可能的,我只是不确定在我的实际项目中可能导致问题的原因。

为此显示的代码不多。我的原型单元格是一个来自xib文件的自定义单元格,但我也试过给它一类UITableViewCell,它没有任何区别。

有没有人遇到像这样的segue应该工作的情况,但不是吗?如果是这样,你是如何解决它的?

1 个答案:

答案 0 :(得分:2)

让我们清楚一些基本的事情

  1. performSegueWithIdentifier: sender:是UIViewController的一种方法,所以为了从单元格执行segue,你需要在单元格中声明VC的弱属性,就像这样
  2. @property(非原子,弱)UIViewController * segueController;

    结束通过

    执行操作
    [self.segueController performSegueWithIdentifier:@"segue_id" sender:self];
    
    1. 最常见的方法 - 使用didSelectRowAtIndexPath具有以下好处:您的segue逻辑属于控制器,而不属于视图(因为uitableviewcell是一个孩子uiview)。所以,我建议您使用此方法进行segues或使用视图层次结构进行操作