簡體   English   中英

將presentModalViewController與故事板一起使用

[英]Using presentModalViewController with storyboards

我對iOS編程很新,我正在開發一個iPad應用程序,它附帶一個帶有4個視圖控制器的Tab鍵控制器(名為FirstViewController,SecondViewController等)。 目前,標簽欄控制器設置為應用程序的默認起點。 我希望能夠在用戶到達該點之前對其進行身份驗證,因此我添加了另一個名為LoginViewController的View Controller,它在Storyboard中自行浮動。

我想要做的是允許應用程序加載和在didFinishLaunching中,顯示登錄頁面,直到身份驗證完成,然后關閉它。 過去幾天我一直在尋找,但我一直在嘗試的一切都失敗了。

我最近的嘗試是

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];

UINavigationController *loginVC = [storyboard instantiateViewControllerWithIdentifier:@"loginVC"];

loginVC.modalPresentationStyle = UIModalPresentationFullScreen;

[self.window.rootViewController presentModalViewController:loginVC animated:YES];

任何幫助,將不勝感激。 它編譯並運行,但視圖根本沒有出現,我真的很困惑為什么會發生這種情況。

問題是我試圖將它實例化為UINavigationController,而實際上它只是一個UIViewController。 在appDelegate.m中的applicationDidBecomeActive中調用它可以解決這個問題。

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *loginVC = [storyboard instantiateViewControllerWithIdentifier:@"loginVC"];
loginVC.modalPresentationStyle = UIModalPresentationFullScreen;    
[self.window.rootViewController presentModalViewController:loginVC animated:YES];

在Swift 2中,現在是:

if let loginController: LoginViewController = mainStoryboard.instantiateViewControllerWithIdentifier("StoryboardControllerID")  as? LoginViewController {
    loginController.modalPresentationStyle = .FullScreen
    self.window?.rootViewController?.presentViewController(loginController, animated: true, completion: { () -> Void in
        // do stuff!
    })
}

您需要從當前顯示的viewController調用“presentModalViewController”,而不是要顯示的視圖。 可能,像這樣:

[self.window.rootViewController presentModalViewController:loginVC animated:YES];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM