从 tableView 委托类中调用视图控制器 segue
Posted
技术标签:
【中文标题】从 tableView 委托类中调用视图控制器 segue【英文标题】:call view controller segue from within tableView delegate class 【发布时间】:2014-09-10 23:59:45 【问题描述】:我已将我的 tableView 委托和数据源与 tableView 控制器分开。到目前为止,它工作得很好。但是,我现在已经到了需要实现 didSelectRowAtIndexPath 委托方法的地方。调用此方法时,我需要从视图控制器执行 segue,但我没有从委托类内部对视图控制器的引用来调用方法,如 [myViewController performSegueWithIdentifier...
处理这个问题的正确方法是什么?我是否只是向我的委托添加一个属性来存储视图控制器?这似乎不是一个好主意,因为视图控制器已经引用了委托。我怎样才能引用回 VC?我在想我可以发布通知,但必须有比这更好的方法。我一直只是使用视图控制器作为委托,所以我以前从来没有处理过这个问题。
【问题讨论】:
【参考方案1】:这个问题对我来说似乎很奇怪,因为如果您在情节提要中创建转场,例如从 tableView 单元格推送转场到另一个视图控制器,那么当点击 tableview 单元格时,转场会自动触发。你可以在
中做其他事情- (void)prepareForSegue:(UIStoryboardSegue *)segue
sender:(id)sender
至于
向我的委托添加一个属性来存储视图控制器
没关系。因为
@property(nonatomic, assign) id< UITableViewDelegate > delegate
viewcontroller 不保留委托
【讨论】:
如果你使用从一个单元到另一个 VC 的 segue,那么你不能使用 didSelectRowAtIndexPath,因为它在 prepareForSegue 之后被调用。最初我将 segue 设置为手动 segue,这就是为什么我需要从我的委托的 didSelectRowAtIndexPath 中调用 performSegueWithidentifier 的原因。但是,我最终按照自己的方式进行操作,并将 segue 更改为从单元格到 VC,然后仅使用 prepareForSegue 并使用 self.tableView.indexPathForSelectedRow.row 来索引我的数据源。所以最后你是对的,我不需要任何我认为我做的事情。谢谢以上是关于从 tableView 委托类中调用视图控制器 segue的主要内容,如果未能解决你的问题,请参考以下文章