用数据初始化 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 并以编程方式将其显示到屏幕上的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 UICollectionView 支持方法仅在我的 ViewController 设置为初始视图控制器时调用?
在 Swift 上获取 UIView 和 UIImageView 的像素和点
[ IOS ] 视图控制对象ViewController的生命周期