我对界面生成器感到非常沮丧,我正在尝试在代码中创建我的视图控制器。我已经设法设置窗口并创建一个导航控制器并将其添加为根视图控制器......
我不太确定我应该从哪里开始添加按钮并设置它们的目标......
我应该将执行此操作的代码放在 UIViewController 的子类中还是其他地方会更好?
同样,一旦我这样做了……放置自动布局约束的最佳位置是什么?
任何帮助,将不胜感激。
我对界面生成器感到非常沮丧,我正在尝试在代码中创建我的视图控制器。我已经设法设置窗口并创建一个导航控制器并将其添加为根视图控制器......
我不太确定我应该从哪里开始添加按钮并设置它们的目标......
我应该将执行此操作的代码放在 UIViewController 的子类中还是其他地方会更好?
同样,一旦我这样做了……放置自动布局约束的最佳位置是什么?
任何帮助,将不胜感激。
每个视图控制器子类都应该创建和释放自己的按钮、控件、子视图等。
您可以通过覆盖此 UIViewController
方法来完成所有视图控制器设置
- (void)viewDidLoad
{
[super viewDidLoad];
...
UIButton* newButton = [UIButton buttonWithType:...];
// other button config (including constraints)
[self addSubview:newButton];
...
// create and setup other subviews
}
每个视图控制器都应该是它自己的扩展UIViewController
(或UITableViewController
等)的自定义类。这样每个视图控制器的所有逻辑都包含在它自己的类中。
我所做的是覆盖viewDidLoad
(不要忘记调用[super viewDidLoad];
)来创建、设置和添加视图控制器所需的所有子视图。这也是您设置每个子视图的约束或自动调整掩码的地方。
如果您需要进行任何自定义布局,请在viewWillLayoutSubviews
方法中进行。
非常感谢你试图帮助我。我一直在搜索有关该主题的苹果文档,只是发现苹果希望您覆盖该loadView
方法UIViewController
并在那里设置整个视图。他们甚至谈到了设置约束。我认为您可以在视图中设置它们确实加载,因为如果您不覆盖该功能,它会给您一个空视图,但我认为我会安全并按照苹果所说的方式去做。
如果我耽误了你的时间,我很抱歉。在问这个问题之前,我应该多看一些。
- (void)loadView
{
CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
UIView *contentView = [[UIView alloc] initWithFrame:applicationFrame];
contentView.backgroundColor = [UIColor blackColor];
self.view = contentView;
levelView = [[LevelView alloc] initWithFrame:applicationFrame viewController:self];
[self.view addSubview:levelView];
}