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

时间:2017-07-14 04:35:59

标签: ios objective-c uiviewcontroller uinavigationcontroller

我的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 个答案:

答案 0 :(得分:1)

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

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

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

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