我在应用程序委托中加载的视图控制器(在导航控制器中)与标签栏重叠

Posted

技术标签:

【中文标题】我在应用程序委托中加载的视图控制器(在导航控制器中)与标签栏重叠【英文标题】:My viewcontroller (in the navcontroller) I load in my app delegate overlaps the tabbar 【发布时间】:2011-04-12 04:43:56 【问题描述】:

当应用加载到我的应用委托中时,我无法初始化视图控制器。视图控制器加载正常,但它与我在底部的标签栏重叠。我是否需要创建另一个视图控制器并将其加载到应用程序委托中?我目前在我的 MainWindow.xib 中设置了一个 tabBarController,其中包含导航控制器,其中包含视图控制器。

这是我的代码...

在我的 didFinishLaunchingWithOptions 中有:

sub = [[SubGabViewController alloc] initWithNibName:@"SubGabViewController" bundle:nil];
nav = [[UINavigationController alloc] initWithRootViewController:sub];
[window addSubview:nav.view];

应该是这样的吗?

sub = [[SubGabViewController alloc] initWithNibName:@"SubGabViewController" bundle:nil];
nav = [[UINavigationController alloc] initWithRootViewController:sub];
[newViewController.view addSubview:nav.view];

谢谢!

【问题讨论】:

【参考方案1】:

如果您尝试使用 UITabBarController,每个选项卡都有自己的根视图控制器(这些甚至可以是 UINavigationController 对象)。假设你有一个 self.tabBarController 的属性(如果你正在做一个标签栏应用程序,我认为这是在 Xcode 中默认创建的),那么:

sub = [[SubGabViewController alloc] initWithNibName:@"SubGabViewContrller" bundle:nil];
nav = [[UINavigationContoller alloc] initWithRootViewController:sub];
[self.tabBarController setViewControllers:[NSArray arrayWithObject:nav] animated:NO];
self.window.rootViewController = self.tabBarController;
// Clean up memory here... only if you don't need references to them
[sub release];
[nav release];

使用 setViewControllers:animated: 你可能应该在 NSArray 中包含额外的视图控制器,否则你最终会得到一个只包含一个项目的标签栏!

【讨论】:

谢谢,差不多了!但是,我可以添加到我已经在界面生成器中创建的标签栏,而不是创建一个新的标签栏吗?通过将其与 IBOutlets 链接起来?【参考方案2】:

[window addSubview:tabBarController.view]; 是对的......

而不是使用代码添加导航控制器.....你应该从界面生成器添加它......在界面生成器中删除tabBarItem并在其上添加navigationController,然后为此设置viewController导航控制器…………

appDelegate 中创建tabBarController 的出口,以便您可以将其添加到window。请不要忘记在 Interface Builder 中建立组件之间的连接。

谢谢,

【讨论】:

以上是关于我在应用程序委托中加载的视图控制器(在导航控制器中)与标签栏重叠的主要内容,如果未能解决你的问题,请参考以下文章

对象在 UIAlertView 委托被调用之前被释放

如何从 App 委托导航内部视图控制器

在核心数据项目中加载视图控制器时出现问题

Swift - 通过导航控制器委托

iOS 委托不能与 performSegueWithIdentifier 一起使用?

如何在 Swift 中加载初始视图控制器?