gpt4 book ai didi

iphone - 未调用 UIViewController 的 loadView

转载 作者:可可西里 更新时间:2023-11-01 04:14:46 24 4
gpt4 key购买 nike

我想以编程方式在 NavigationController 中设置 UIViewController,但是调用了 loadView 和 viewDidLoad 方法。

这是我在应用委托(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];

当我启动应用程序时,我看到一个导航栏,但没有调用 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 仍然没有被调用。

最佳答案

UIViewController 将在调用 Controller 的 view getter 时创建其 View (通过从 ni​​b 加载它或实现 -loadView),并且它的 View 当前是 nil

在显示的代码中,您从不调用 View 属性的 getter,只调用它的 setter。

此外,您正在从您的应用程序委托(delegate)中分配 Controller 的 View 。 UIViewController 应该根据需要创建自己的 View ,而不是让其他类提供它们。当您意识到 Controller 卸载其 View 并尝试重新创建它以响应内存警告时,此方法将在以后给您带来问题。让你的 Controller 创建它的 View ,不要试图传递给它。

关于iphone - 未调用 UIViewController 的 loadView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7380754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com