动态设置拆分视图控制器为根视图控制器IOS

Posted

技术标签:

【中文标题】动态设置拆分视图控制器为根视图控制器IOS【英文标题】:Set split view controller as root view controller dynamically IOS 【发布时间】:2014-04-23 17:05:14 【问题描述】:

您好,我正在开发使用拆分视图控制器的 Iphone 应用程序。 Apple doc 明确表示拆分视图控制器必须位于根位置,但在我的情况下它不在根位置。所以我想动态地将它设置为root。最初我试图在应用程序委托中设置它,但它不会工作。我的申请是这样的;它有第一个 UI 视图控制器,它有一个按钮。单击按钮时,我正在拆分视图控制器上移动。这意味着它不在根位置。我试图在按钮单击操作上更改根视图控制器,但它不起作用。是否有适当的例子。我正在使用故事板。需要帮忙。谢谢。

【问题讨论】:

第一个视图控制器是闪屏还是欢迎用户的东西,然后SplitView是应用程序的主要部分? 不,它不是启动画面。它的登录屏幕。一旦用户点击登录按钮,它应该进入下一个视图,即拆分视图。 我不认为您正在使用 UISplitViewController 创建 iPhone 应用程序。一个 iPad 应用程序,是的。但不是 iPhone 应用程序。 :) 是的,实际上 iphone 和 ipad 都有 Here 是我处理这种情况的方法,希望对您有所帮助。 【参考方案1】:

就像苹果说的那样,让 UISplitViewController 成为故事板的 rootView。然后将登录视图控制器添加为模态,并从拆分视图控制器中呈现(可能没有动画)。

这是我在我的一个应用中做类似事情的方式。

applicationDidFinishLaunching:withOptions:我直接拿苹果的代码。对于 iPad,如果您使用 Master/Detail 模板,他们会将 splitViewController 设置为根。

然后在applicationWillEnterForeground: 中显示我的登录屏幕。

-(void)applicationWillEnterForeground:(UIApplication*)application 
       UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;


       UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main_iPad" bundle:nil];
       UIViewController *myViewController = [mainStoryboard  instantiateViewControllerWithIdentifier:@"whatever name I gave my VC as its Storyboard ID"];

       [splitViewController presentViewController:myLoginViewController animated:NO completion:nil];
 

我使用应用程序将进入前台,以便在应用程序启动时以及当它们从后台返回时弹出登录屏幕。您可能想以不同的方式进行操作。

正如其他人提到的,由于您的应用程序是通用的,因此您只想在 iPad 上引用 splitViewController,因此请在所有这些内容周围放置一个 if 块。如果您还想展示 iPhone 的登录信息,情况会稍有不同,您将使用 iPhone 故事板并从 iPhone 根目录展示。在根为

的 Apple Master/Detail 模板中
 UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;

【讨论】:

以上是关于动态设置拆分视图控制器为根视图控制器IOS的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式设置为根视图控制器时,视图控制器无法正确显示子视图

如何在 AppDelegate 中将视图控制器设置为根视图控制器

拆分视图控制器中的 iOS 静态页脚

在 iOS 拆分视图控制器上推送新的视图控制器

iOS - 拆分视图控制器 - 如何从主视图控制器内部获取指向详细视图控制器的指针(引用)?

iOS、iPad - 具有相同主视图控制器和详细视图控制器的多个拆分视图控制器