2015-01-05 89 views
1

Apple文檔說任何使用分割視圖控制器的應用程序都應該將其作爲根視圖控制器。但是我感到很震驚,我的登錄界面應該將我重定向到一個分割視圖控制器。有沒有辦法做到這一點?不希望SplitView控制器作爲rootViewController

我使用故事板和新的編程。請幫助。

+0

你有沒有考慮過拆分視圖模態呈現登錄屏幕? – Wain

+0

這是一個很常見的問題。更改應用程序的主UIWindow的'rootViewController'就可以做到這一點。 – nburk

+0

@prasaadem你對我的建議有什麼看法? – nburk

回答

0

一種很常見的方式來解決這個問題,改變你的應用程序主要UIWindowrootViewController(這又是你的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; 
} 

請注意,此代碼只是虛擬的代碼,使我的建議多一點實實在在的,它做以下假設:

  • 你有一個故事板在您的應用程序包稱爲Main
  • Main故事板內你有一個UISplitViewController故事板IDMainSplitViewController這樣就可以將它實例化編程
  • 你需要import AppDelegate.h去根UIWindow
+0

This Works awesome !!謝謝:) @nburk – prasaadem

0

鏈接你的LoginViewControllerUIViewcontroller訪問。在此控制器中拖動一個UIContainerView,並在其中嵌入您的UISplitViewController

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.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

這賽格瑞被觸發,當我登錄按鈕按下並且登錄信息有效。 我的rootViewController是有我的登錄按鈕,而不是UISplitViewController的viewController。

參考:這不是我寫的代碼。搜索2天后在網上找到它。將盡快更新來源鏈接以供參考。

三江源所有您的答覆:)

相關問題