gpt4 book ai didi

ios - UIViewController 指定初始化器 vs loadView 方法

转载 作者:行者123 更新时间:2023-12-01 17:18:46 24 4
gpt4 key购买 nike

我有我的 View Controller 类 MyVC 从 UIViewController 类扩展。在指定的初始化程序中,我将背景颜色更改为绿色,如下所示

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
[self.view setBackgroundColor:[UIColor greenColor]];
}
return self;
}

我还有 loadView 方法,它创建一个新的 UIView 对象并将其颜色更改为 RED
- (void)loadView
{
UIView* view = [[UIView alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
[view setBackgroundColor:[UIColor redColor]];
[self setView:view];
[view release];
}

指定的初始化器在 loadView 调用之前被调用。所以我希望我的 View 颜色(我在指定的初始化程序中设置为绿色)应该变成红色(我在 loadView 中做了)。
我看到我的颜色为 GREEN,如果我在指定的初始化程序中评论该 GREEN 颜色行,那么我看到的是 RED 颜色。那么,如果在初始化程序之后调用它,为什么不覆盖 loadView 方法中的 View 属性呢?

最佳答案

迦勒几乎是对的。当您访问 View Controller 的 view属性(property),view访问器方法检查 View 是否已经加载。如果没有,它会调用 loadView ,然后 viewDidLoad ,然后返回 View 。

初始化程序中的这一行访问 view属性(property):

    [self.view setBackgroundColor:[UIColor greenColor]];

所以要返回 View , view访问者调用您的 loadView方法。您的 loadView方法将 View 的背景颜色设置为红色。然后您的初始化程序将背景颜色设置为绿色。

如果你洒一些 NSLog s 在你的初始化程序和你的 loadView方法,或者如果您在 loadView 中设置断点方法,您将看到 loadViewview 调用,从 initWithNibName:bundle: 调用.

关于ios - UIViewController 指定初始化器 vs loadView 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9137927/

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