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 与情节提要的主要内容,如果未能解决你的问题,请参考以下文章