2014-09-10 55 views
1

我已经从tableView控制器中分离了我的tableView委托和数据源。到目前为止它的工作很棒。不过,我现在已经到了需要实现didSelectRowAtIndexPath委托方法的地方。当这个方法被调用时,我需要从我的视图控制器执行segue,但是我没有从委托类中引用视图控制器来调用像[myViewController performSegueWithIdentifier的方法...从tableView委托类中调用视图控制器segue

什么是正确的方法处理这个?我只是将一个属性添加到我的委托来存储视图控制器?这看起来不是一个好主意,因为视图控制器已经有了对委托的引用。我如何参考VC?我想我可以发布通知,但必须有比这更好的方法。我总是只使用视图控制器作为委托,所以我从来没有处理过这个问题。

回答

0

这个问题对我来说似乎很奇怪,因为如果你在storyboard中创建了segue,比如说从tableView单元格到另一个viewcontroller的push segue,那么当点击tableview单元格时,会自动触发segue。您可以在

- (void)prepareForSegue:(UIStoryboardSegue *)segue 
       sender:(id)sender 

做其他的事情,作为

属性添加到我的委托存储视图控制器

这没关系。因为如果你从另一个VC电池使用赛格瑞

@property(nonatomic, assign) id<UITableViewDelegate> delegate 

视图 - 控制不保留委托

+0

,那么你就不能使用didSelectRowAtIndexPath方法,因为这被prepareForSegue后调用。最初,我将segue设置为手动segue,这就是为什么我需要从我的代理的didSelectRowAtIndexPath内调用performSegueWithidentifier。然而,我最终以你的方式做了,并将segue从单元格更改为VC,然后使用prepareForSegue并使用self.tableView.indexPathForSelectedRow.row来索引我的数据源。所以最后你是对的,我不需要任何我认为我做的。谢谢 – 2014-09-11 02:58:09

相关问题