用数据初始化 ViewController 并以编程方式将其显示到屏幕上

Posted

技术标签:

【中文标题】用数据初始化 ViewController 并以编程方式将其显示到屏幕上【英文标题】:Initialize ViewController with data and programmatically show it to screen 【发布时间】:2017-07-14 04:35:59 【问题描述】:

我的 ios 应用程序的故事板包含一个带有根 ViewController 的 NavigationController。从辅助视图控制器,我想以编程方式显示根 VC,附加的 NavigationController 显示在顶部,同时用一些数据实例化根 VC。

到目前为止,我在辅助视图控制器中有以下内容:

UINavigationController* nav = [[UIStoryboard storyboardWithName:@"Storyboard" bundle:nil] instantiateViewControllerWithIdentifier:@"NavController"];
UIViewController* viewController = [[UIStoryboard storyboardWithName:@"Storyboard" bundle:nil] instantiateViewControllerWithIdentifier:@"RootVC"];
viewController.data = @"My test data";

[self presentViewController:nav animated:YES completion:nil];

根VC显示成功,顶部有导航栏,但是当我在rootVC逻辑中打印以下内容时,它显示为null:

 NSLog(@"Initialized data: %@", self.data); // null

我该如何解决这个问题?似乎初始化的数据不是从辅助控制器传来的。

【问题讨论】:

【参考方案1】:

您正在创建具有标识符“RootVC”的UIViewcontroller 的新实例并为其分配数据。

相反,您应该将数据分配给导航控制器的 rootViewController,如下所示:

self.navigationController.viewControllers.firstObject.data = @"My test data";

这是同一个类的不同实例的问题。

【讨论】:

以上是关于用数据初始化 ViewController 并以编程方式将其显示到屏幕上的主要内容,如果未能解决你的问题,请参考以下文章

在ViewController中View的生命周期

为啥我的 UICollectionView 支持方法仅在我的 ViewController 设置为初始视图控制器时调用?

在 Swift 上获取 UIView 和 UIImageView 的像素和点

[ IOS ] 视图控制对象ViewController的生命周期

iOS Swift 子类化 ViewController 由 xib (nib) 文件初始化

iOS - ViewController生命周期