我最近开始学习编程iOS/iPhone
。在XCode5/iOS7
出现之前,我以为自己知道该怎么做了。以前,我创建了一个从UIViewController
派生的类,其中包含一个XIB
文件,添加了一个标签,并通过编程方式将其添加到rootWindow:
。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
... // boilerplate code
MyViewController* myRoot = [[MyViewController alloc]init];
self.window.rootViewController = myRoot;
为了使用导航栏,我稍微修改了代码:
MyViewController* myRoot = [[MyViewController alloc]init];
UINavigationController* navigationController = [[UINavigationController alloc]init];
[navigationController pushViewController:myRoot animated:YES];
self.window.rootViewController = navigationController;
这似乎工作得很好。 然而,在iOS 7上,我的自定义视图控制器顶部的控件似乎在导航栏后面。 一些搜索结果在这个链接中描述了状态栏的变化。
它也似乎表明, A)UINavigationController应该自动处理更改 B)"自动布局"应该自动处理更改,
而且我不需要担心。 然而,我上面的示例应用似乎没有自动处理任何内容。
我还找到了一些其他使用控制器的示例代码:将导航控制器的视图添加为现有视图的subview。 这在应用程序生命周期后期添加导航控制器时有些道理,但我正在尝试在启动时设置一个。
我是否正确地使用了UINavigationController?
我需要考虑什么来适应iOS7和早期版本?
如何配置“自动布局”(我在界面构建器中没有看到这个)?