gpt4 book ai didi

ios - loadview 被无限次调用

转载 作者:行者123 更新时间:2023-12-01 18:20:49 26 4
gpt4 key购买 nike

我的应用中有两个 ViewController ViewController1.mViewController2.m .

AppDelegate我有这个代码。

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

// Override point for customization after application launch.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{
self.viewController = [[ViewController1 alloc] initWithNibName:@"ViewController_iPhone" bundle:nil];
}
else
{
self.viewController = [[ViewController1 alloc] initWithNibName:@"ViewController_iPad" bundle:nil];
}


self.window.rootViewController = self.viewController;

[self.window makeKeyAndVisible];

在 ViewController1.m 中,我添加了一个按钮,单击按钮我正在显示另一个 View Controller ViewController2.m像这样:
ViewController2 * obj = [[ViewController2 alloc] initWithNibName:nil bundle:nil];

[self.view addSubview:obj.view];

loadView ViewController2.m 我正在添加另一个像这样的按钮
NSLog(@"\n Load view called");

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

[button addTarget:self action:@selector(onButtonClicked:) forControlEvents:UIControlEventTouchUpInside];

[button setTitle:@"Back to previous view" forState:UIControlStateNormal];

button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);

[self.view addSubview:button];

当我运行我的应用程序时,单击 ViewController1.m 中的按钮时,应用程序挂起并且 loadView ViewController2.m 开始被无限调用。

我不知道这个问题背后的原因,我只是想在单击按钮时加载另一个 ViewController 而我没有使用任何导航 Controller 。

有人可以指出这个问题背后的原因吗?

最佳答案

不要在 loadView 中这样做.而是将您的代码移至 viewDidLoad .问题是您正在访问 self.viewloadView 内, 基本上调用 loadView自从第一次调用 loadView再也没有回来。

对不起绕口令... loadView在 View 尚未实例化时自动调用。只有当它返回时, View 初始化才完成。如果它没有返回并且您尝试访问 view属性,它会再次调用它。在您的情况下,它是递归的,因为您仍在 loadView 中方法。

来自 docs :

The view controller calls this method when its view property is requested but is currently nil. This method loads or creates a view and assigns it to the view property.

关于ios - loadview 被无限次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17404801/

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