2013-12-18 35 views
0

iPad郵件應用程序中沒有帳戶設置時,它會打開郵件客戶端進行選擇?選擇郵件客戶端後,視圖控制器將以模態方式關閉,並顯示UISplitViewController如何顯示ViewController,然後將其解除以顯示UISplitViewController?

我想要在iPad應用程序上工作,在那裏我必須首先顯示ViewController並將其解除以顯示UISpiltViewController。我想知道,它是如何完成的。

我只能通過將其設置爲rootView控制器來午餐UISplitViewController。這裏是我的代碼

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 



    PopViewController * menuVC = [[PopViewController alloc] initWithStyle:UITableViewStyleGrouped]; 
    UINavigationController * navMenue = [[UINavigationController alloc] initWithRootViewController:menuVC]; 

    DetialViewController *delainVC =[[DetialViewController alloc] init]; 
    UINavigationController * navdetail = [[UINavigationController alloc] initWithRootViewController:delainVC]; 

    UISplitViewController *splitVC = [[UISplitViewController alloc] init]; 
    splitVC.viewControllers = [NSArray arrayWithObjects:navMenue,navdetail, nil]; 


    self.window.rootViewController = splitVC; 
    self.window.backgroundColor = [UIColor whiteColor]; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

我知道你必須總是設置UISplitViewController爲您RootViewController的。但我的目標是在UISplitViewController之前打開一個ViewController。完全像iPad郵件應用程序,當沒有帳戶設置。

+1

已經登錄我認爲你是正確的。設置根視圖控制器後,決定是否要將模態視圖控制器置於其上。 –

+0

我的確在它上面打開了一個模態視圖控制器。它看起來很奇怪,因爲我可以在模態視圖打開之前看到SplitViewController。 –

回答

2

自 - (無效)viewDidAppear - (無效)viewDidLoad中之前被調用。同時在視圖中沒有動畫的情況下打開模態視圖控制器也沒有加載方法。解決了這個問題。並沒有UISplitViewcontroller的一瞥。以下是代碼。此代碼應放置在detailview控制器中。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self checkLogIn]; 

} 

寫了一個函數來檢查,如果用戶在

-(void) checkLogIn{ 

    if(notLoggedIn){ 
     ViewController * VC = [[ViewController alloc] init]; 
     [self presentViewController:VC animated:NO completion:nil]; 
    } 

} 
+1

很高興知道這適用於分割視圖控制器。這不是一個通用的解決方案 - 如果你從標籤欄控制器(或獨立控制器)中的第一個標籤控制器嘗試這樣做,你會得到一個錯誤(試圖在上呈現其視圖不在窗口層次中!)。它可以在導航控制器的根視圖控制器上工作。 – rdelmar

+0

@rdelmar它只是一個示例項目。上述代碼也適用於作爲導航控制器的根視圖控制器。我不知道上述解決方案是否是最好的,但它按預期工作。我想看看是否有其他解決方案。 –

1

如果您從詳細視圖控制器的viewDidAppear方法(不帶動畫)中顯示模態視圖控制器,它將是您首先看到的。動畫(BOOL):例如,

-(void)viewDidAppear:(BOOL)animated { 
    if (notLoggedIn) { 
     UIViewController *modal = [self.storyboard instantiateViewControllerWithIdentifier:@"Blue"]; 
     [self presentViewController:modal animated:NO completion:nil]; 
    } 
} 
+0

感謝您的回答。在加載模式視圖控制器之前,我仍然可以看到UISplivewController的一瞥。我發現我做錯了什麼。我用動畫打開了模態視圖控制器。我會投票答覆你的答案。但爲了將來的參考,我會發布的答案,運作良好。 –

+0

@RedDevil,你看到模擬器或設備上的「一瞥」。我也沒有看到。 – rdelmar

+0

是的,我確實看到了一眼。由於 - (無效)viewDidLoad之前調用 - (void)viewDidAppear:(布爾)動畫..將代碼放在viewdidload解決了問題 –

相關問題