L. *_*ner 5 iphone uiviewcontroller uiview ios
我想以编程方式在NavigationController中设置UIViewController,但是调用loadView和viewDidLoad方法.
这是我在app delegate中的代码:
MyViewController *viewController = [[MyViewController alloc] init];
UIView *view = [[UIView alloc] initWithFrame:window.frame];
viewController.view = view;
UINavgationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
[window addSubview:[navController view];
[window makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)
当我启动应用程序时,我看到一个导航栏,但没有调用loadView.我错过了什么?我以为在你打电话后会调用loadViewview
编辑
MyViewController *viewController = [[MyViewController alloc] init];
[viewController view]; // doesn't look right?
UINavgationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
[window addSubview:[navController view];
[window makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)
编辑了Jonah的评论,但loadView仍然没有被调用.
Jon*_*nah 10
当调用控制器的getter并且其视图当前时,A UIViewController将创建其视图(通过从nib加载或实现-loadView).viewnil
在显示的代码中,您永远不会调用view属性的getter,只调用它的setter.
此外,您还要从应用程序委托中分配控制器的视图.UIViewController预计s会根据需求创建自己的观点,而不是由其他类提供.当您意识到控制器卸载其视图并尝试重新创建它以响应内存警告时,此方法将在以后引发问题.让你的控制器创建它的视图,不要试图传递它.
| 归档时间: |
|
| 查看次数: |
5057 次 |
| 最近记录: |