gpt4 book ai didi

objective-c - 以编程方式创建 UIView 和 UIViewController 并链接在一起的正确方法

转载 作者:行者123 更新时间:2023-11-29 11:12:45 26 4
gpt4 key购买 nike

我是 iOS 开发新手。为了让我的 iOS 应用程序很好地划分,我想以编程方式创建 UIView 和 UIViewController,并在创建后将它们绑定(bind)在一起。

所以,我执行以下操作:在我的 View Controller 中我有这个:

-(void)loadView {    
NSLog(@"HPSMainMenuViewController loadView starting");
HPSMainMenuView* mainmenuView = [[HPSMainMenuView alloc]initWithFrame:CGRectZero];
self.view = mainmenuView;
}

在我看来我有这个:

-(id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
// Initialization code
NSLog(@"HPSMainMenuView initWithFrame starting");
[self setup];
}
return self;
}
-(void)setup {

UIButton* btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.tag = E_PROFILE_BUTTON;
[btn setTitle:@"Option1" forState:UIControlStateNormal];

[self.view addSubview:btn ];

btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.tag = E_CONTACTS_BUTTON;
[btn setTitle:@"Option2" forState:UIControlStateNormal];

[self.view addSubview:btn ];

self.title = @"Hello";
}

这是执行此操作的正确方法吗(假设我想要完全的程序控制)。在 ViewController 中动态构建 View 似乎是错误的,因此我的方法是在实际的 UIView 类中构建 View 。

最后,我正在使用 loadView;我应该使用 viewDidLoad 吗?如果是,为什么?

非常感谢。

最佳答案

您所做的是正确的,而且实际上是好的。许多开发人员将他们的 View Controller 和 View 紧密地联系在一起,但如果您想将它们分开,那就太好了。

loadView 是您应该创建和初始化所有内容的地方。 viewDidLoad 如果由于内存警告(例如)卸载/重新加载 View ,则可以多次调用。因此,viewDidLoad 是您恢复已保存状态、使您的 View 正确反射(reflect)您的模型或您无法在 loadView 中执行的任何其他初始化的地方。

关于objective-c - 以编程方式创建 UIView 和 UIViewController 并链接在一起的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10814813/

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