我在UITableViewCell
和UIViewController
之间设置了一个segue。我的理解是,如果我将原型单元格中的Show segue设置为UIViewController
,则在点击UIViewController
中的一个单元格时会显示UITableView
,但是&# 39;没有发生在我身上。让它工作的唯一方法是覆盖tableView didSelectRowAtIndexPath
,然后调用performSegueWithIdentifier
。
为了测试这一点,我将一个快速项目与UITableViewController
和UIViewController
组合在一起。当我在原型单元格和UIViewController
之间创建一个segue时,它按照应有的方式工作。所以我知道这是可能的,我只是不确定在我的实际项目中可能导致问题的原因。
为此显示的代码不多。我的原型单元格是一个来自xib文件的自定义单元格,但我也试过给它一类UITableViewCell
,它没有任何区别。
有没有人遇到像这样的segue应该工作的情况,但不是吗?如果是这样,你是如何解决它的?
答案 0 :(得分:2)
让我们清楚一些基本的事情
performSegueWithIdentifier: sender:
是UIViewController的一种方法,所以为了从单元格执行segue,你需要在单元格中声明VC的弱属性,就像这样@property(非原子,弱)UIViewController * segueController;
结束通过
执行操作[self.segueController performSegueWithIdentifier:@"segue_id" sender:self];
didSelectRowAtIndexPath
具有以下好处:您的segue逻辑属于控制器,而不属于视图(因为uitableviewcell是一个孩子uiview)。所以,我建议您使用此方法进行segues或使用视图层次结构进行操作