我希望能够通过编程的方式在NavigationController中设置一个UIViewController,但是loadView方法和viewDidLoad方法都没有被调用。
以下是我在AppDelegate中的代码:
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];
当我启动应用程序时,我看到一个导航栏,但没有调用loadView。我错过了什么吗? 我以为在调用
view
之后会调用loadView。MyViewController *viewController = [[MyViewController alloc] init];
[viewController view]; // doesn't look right?
UINavgationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
[window addSubview:[navController view];
[window makeKeyAndVisible];
根据Jonah的评论进行了编辑,但是loadView仍然没有被调用。
[viewController view]
调用视图的 getter,但您不需要直接这样做。您添加视图控制器的UINavigationController
将在某个时候调用该 getter,以将您的控制器视图添加到视图层次结构中。您可以分享一下您的视图控制器实现吗?听起来好像还有其他问题。 - Jonah-init
作为最后的办法,因为loadView
一开始就没有被调用。所以如果我再次删除init
中的设置部分,-loadView
或-viewDidLoad
也不会被调用。非常感谢你的帮助。@jonah - L. Steiner