在 iOS 7 Storyboard 中用 UITabBarController 替换 UIViewController

Posted

技术标签:

【中文标题】在 iOS 7 Storyboard 中用 UITabBarController 替换 UIViewController【英文标题】:Replacing UIViewController with UITabBarController in iOS 7 Storyboard 【发布时间】:2013-11-19 23:10:46 【问题描述】:

这就是我的故事板中的内容:

带有树的视图是一个 UIViewController。它有一个名为 BKFirstViewController 的类。 现在我想做的是让用户输入他的登录数据。然后服务器验证登录数据,当我得到服务器的肯定响应时,我想用 UITabBarController 替换绿色的 UIViewController。

所以我所做的是,我在 Main.Storyboard 中创建了一个 UITabBarController 并给了它故事板识别器:“logedInView” 然后我给了他们三个一个控制器,名为:BKLogedInController 这个控制器是我手动创建的,因为 xCode 不适合我

接下来我用谷歌搜索了如何在 ViewControllers 之间切换,然后弹出 ***:

    UIStoryboard *storyboard = self.storyboard;

    UITabBarController *logedInCtrl = [storyboard instantiateViewControllerWithIdentifier: @ "logedInView"];

    [self.navigationController pushViewController:logedInCtrl animated:YES];

我的问题是:什么也没发生 :(

【问题讨论】:

【参考方案1】:

这就是我目前在 ios7 上做同样事情的方式。在您的照片中,您似乎使用的是导航控制器而不是标签栏控制器。

 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
UINavigationController * vc = [storyboard  instantiateViewControllerWithIdentifier:@"start"];
[self presentViewController:vc animated:YES completion:nil];

一定要给你的故事板一个ID

【讨论】:

【参考方案2】:

首先,您应该停止搜索并阅读 Apple 的文档,尤其是“iOS 视图控制器编程指南”。如果你有,你会知道你不能推送视图控制器,除非它嵌入到导航控制器中。因此,在您的情况下, self.navigationController 将为 nil,并且该行将什么也不做。你要做的是切换窗口的根视图控制器:

self.view.window.rootViewController = logedInCtrl;

【讨论】:

以上是关于在 iOS 7 Storyboard 中用 UITabBarController 替换 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章

无法为 iOS 7 编译 Storyboard

iOS 7 的 UISplitViewController“在 Storyboard 中找不到 ViewIdentifier”错误

iOS 7 中 StoryBoard 总体缩放

Storyboard 应用程序在 iOS 7 上运行正常,但在 iOS 6.1 上导航栏切换视图

点击文本字段时用选择器视图替换键盘(Swift、Storyboard、iOS 9、Xcode 7)

Xcode 5 iOS 7 Simulator 没有加载 Storyboard 让我抓狂! (没有本地化)