3

我最近才开始为iOS/iPhone. 我以为我知道自己在做什么,直到XCode5/iOS7出现。UIViewController以前,我创建了一个从a派生的类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与早期版本相比,我需要考虑什么?

如何配置“自动布局”(我在任何地方的界面构建器中都看不到这个)?

4

1 回答 1

2
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    self.navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
    self.window.rootViewController = self.navigationController;
    [self.window makeKeyAndVisible];
    return YES;
}
于 2013-09-24T05:07:36.863 回答