将分割视图控制器设置为动态IOS的根视图控制器

时间:2014-04-23 17:05:14

标签: ios uisplitviewcontroller

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

1 个答案:

答案 0 :(得分:0)

使UISplitViewController成为故事板的rootView,就像Apple所说的那样。然后将登录View Controller添加为模态并从拆分视图控制器中显示它(可能没有动画)。

以下是我在其中一个应用中执行类似操作的方式。

applicationDidFinishLaunching:withOptions:我直接使用Apple的代码。对于iPad,如果您使用主/明细模板,他们会将splitViewController设置为root。

然后在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模板中,root是

 UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;