我刚刚对界面构建器感到沮丧,我试图在代码中创建视图控制器。我已经成功地设置窗口,并创建一个导航控制器,并将其添加为根视图控制器...哪里是放置UIViewController的设置代码的最佳位置;
我不太清楚,我应该开始添加按钮并设定他们的目标......
我应该把代码做在UIViewController的子类中吗?还是会在其他地方更好?
另外,一旦我这样做了......什么是放置自动布局约束的最佳场所?
任何帮助,将不胜感激。
我刚刚对界面构建器感到沮丧,我试图在代码中创建视图控制器。我已经成功地设置窗口,并创建一个导航控制器,并将其添加为根视图控制器...哪里是放置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的loadView方法,并设置整个视图。他们甚至提到设置约束条件。 –
@MattZera如果你完全没有笔尖,我看不出任何优势。 viewDidLoad也允许你混合和匹配笔尖/代码,所以为了保持一致性,我使用那个。 –
@MattZera http://stackoverflow.com/questions/8876212/proper-use-of-loadview-and-viewdidload-with-uiviewcontroller-without-nibs-xibs –
每个视图控制器应该是它自己的自定义类扩展UIViewController
(或UITableViewController
等)。这样,每个视图控制器的所有逻辑都包含在它自己的类中。
我所做的是覆盖viewDidLoad
(不要忘记致电[super viewDidLoad];
)创建,设置和添加视图控制器所需的所有子视图。这也是您设置每个子视图的约束或自动调整掩码的位置。
如果您需要执行任何自定义布局,请在viewWillLayoutSubviews
方法中执行此操作。
非常感谢你试图帮助我。我一直在搜索有关该主题的苹果文档,并发现苹果希望您覆盖UIViewController
的loadView
方法并在那里设置整个视图。他们甚至谈到了设置约束的一些事情。我认为你可以在视图中设置它们,因为如果你不覆盖这个函数,它会给你一个空的视图,但我认为我会安全的,并按照苹果公司的说法这样做。
对不起,如果我放弃了你的时间。在提出这个问题之前,我应该多看看。
- (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];
}
https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/ViewLoadingandUnloading/ViewLoadingandUnloading.html –
是啊......那是苹果的文档,我发现后,我问的问题。我不知道我是否应该回答我自己的问题,但苹果希望你覆盖loadView –
当覆盖loadView时,小心使用自定义VC的topView。如果您使用XIB或StoryBoard,请在viewDidLoad中进行设置。另外检查安装时viewWillAppear和viewDidLayOutSubViews –