Son*_*lin 10 delegates ios segue
我有一个有两个segues的应用程序.在其中一个segue中,当前视图控制器成为委托而另一个不成为委托.
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"MoreOptions"]) {
UINavigationController *navigationController = segue.destinationViewController;
MoreOptionsViewController *controller = (MoreOptionsViewController *)navigationController.topViewController;
controller.delegate = self;
} else if ([segue.identifier isEqualToString:@"FullStoryView"]) {
SingleStoryViewController *detailViewController = segue.destinationViewController;
detailViewController.urlObject = sender;
}
}
Run Code Online (Sandbox Code Playgroud)
所有这一切都很好,但我想尝试更好地理解代码.我不明白的是,我必须通过从navigationController.topViewController中获取它来获取对MoreOptionsViewController的引用,而不是简单地从segue.destinationViewController获取它,就像我在第二个if条件中那样.是因为我将当前视图控制器(self)设置为委托吗?同样,我不是试图解决问题,而是试图更好地了解正在发生的事情.
Mar*_*ams 11
看一下你的故事板,应该很清楚为什么会这样.您已嵌入MoreOptionsViewController在一个UINavigationController和一个连接到赛格瑞导航控制器,从而使得所述destinationViewController.这很常见.