navigationController.topViewController 与情节提要

Posted

技术标签:

【中文标题】navigationController.topViewController 与情节提要【英文标题】:navigationController.topViewController vs storyboard 【发布时间】:2015-09-27 21:13:16 【问题描述】:

我正在尝试从我的 appdelegate 中注入对 uitableviewcontroller 中属性的引用。第一个成功 - 我可以从我的 uitableviewcontroller 引用 xmppStream,但第二个似乎在某处破坏了引用,我不知道为什么。

首先 - 好的,uitableviewcontroller 中的 xmppStream 不为零;

UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;

PhoneNumberTableViewController *myViewController = (PhoneNumberTableViewController *)navigationController.topViewController;

[myViewController setXmppStream:[self xmppStream]];

第二个 - 获得引用但被销毁,即在 uitableviewcontroller xmppStream 为 nil?

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];

PhoneNumberTableViewController *tv = [sb instantiateViewControllerWithIdentifier:@"UserRegistration"];

[tv setXmppStream:[self xmppStream]];

任何帮助将不胜感激。

谢谢

【问题讨论】:

instantiateViewControllerWithIdentifier 实例化一个视图控制器,因此得到一个新对象,该对象随后被丢弃,因为不再需要/没有强引用 【参考方案1】:

应该尝试创建PhoneNumberTableViewController 的属性,并且在需要使用时使用该变量。喜欢

UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;

_myViewController = (PhoneNumberTableViewController *)navigationController.topViewController;

[myViewController setXmppStream:[self xmppStream]];

【讨论】:

以上是关于navigationController.topViewController 与情节提要的主要内容,如果未能解决你的问题,请参考以下文章