ios – prepareForSegue和代表

我有一个应用程序与两个部分.在其中一个区段中,当前视图控制器成为一个委托,另一个不是.
- (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;
    }
}

所有这一切都很好,但我想更好地尝试了解代码.我不明白的是,我必须通过从navigationController.topViewController获取参考,而不是像在第二个if条件中那样从segue.destinationViewController中获取它,从而获得对MoreOptionsViewController的引用.是因为我将当前视图控制器(self)设置为代理?再次,我不是想解决一个问题,只是想更好地了解发生了什么.

解决方法

看看你的故事板,应该明白为什么会这样.您在UINavigationController中嵌入了MoreOptionsViewController,并将一个segue连接到导航控制器,从而使其成为destinationViewController.这是很常见的.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...