不要将SplitView Controller作为rootViewController

时间:2015-01-05 07:21:44

标签: ios ipad

Apple文档说任何使用拆分视图控制器的应用程序都应该将其作为根视图控制器。但我很震惊,我的登录界面应该将我重定向到分割视图控制器。有没有办法实现这个目标?

我正在使用故事板和新编程。请帮助。

3 个答案:

答案 0 :(得分:0)

解决此问题的一种非常常见的方法是更改​​应用程序主rootViewController的{​​{1}}(后面再次是UIWindow属性)成功登录。

因此,您应用的初始视图控制器需要是处理登录的AppDelegate。成功登录后,您可以执行以下操作:

LoginViewController

请注意,此代码只是虚拟代码,以使我的建议更有形,它做出以下假设:

  • 您的应用程序包中有一个名为- (void)switchToMainInterface { // Change the root view controller of the application window to the main storyboard UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil]; UISplitViewController *mainSplitViewController = [mainStoryboard instantiateViewControllerWithIdentifier:@"MainSplitViewController"]; UIWindow *mainApplicationWindow = [[[UIApplication sharedApplication] delegate] window]; mainApplicationWindow.rootViewController = mainSplitViewController; } Storyboard
  • 在此Main 故事板中,您有{{1>} Storyboard ID Main,以便您可以通过编程方式对其进行实例化< / LI>
  • 您需要UISplitViewController才能访问根MainSplitViewController

答案 1 :(得分:0)

将您的LoginViewControllerUIViewcontroller相关联。在此控制器中拖动UIContainerView,然后将UISplitViewController嵌入其中。

答案 2 :(得分:0)

我创建了一个自定义segue类并实现了以下代码。我不确定它对我的申请有什么影响。对我来说这似乎是一个高级别的代码,因为我是一个不成熟但它工作正常。希望你觉得它很有用。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    {

            //Override point for customization after application launch.
        //    UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
        //    UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
        //    splitViewController.delegate = (id)navigationController.topViewController;

            return YES;

    }

评论上面的代码,我相信这是暂停UISplitViewController加载到UIWindow。

我的自定义segue - &gt; segue.m如下..

#import "Seague.h"

@implementation Seague

-(void)perform
{

        UIViewController *sourceViewController = (UIViewController *)self.sourceViewController;
        UIViewController *destinationViewController = (UIViewController *)self.destinationViewController;

        UISplitViewController *splitViewController = (UISplitViewController *)destinationViewController;
        UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
        splitViewController.delegate = (id)navigationController.topViewController;

        UIWindow *window = [UIApplication sharedApplication].keyWindow;
        window.rootViewController = destinationViewController;
        window.rootViewController = sourceViewController;

        [UIView transitionWithView:sourceViewController.view.window duration:0.5 options:UIViewAnimationOptionTransitionNone animations:^{
            window.rootViewController = destinationViewController;
        } completion:^(BOOL finished){}];
    }

@end

当我按下登录按钮并且登录详细信息有效时,会触发此segue。 我的rootViewController是viewController,它有我的登录按钮,而不是UISplitViewController。

参考:这不是我写的代码。搜索2天后,在网上的某个地方找到它。将更新源链接以供参考。

谢谢你的回复:)