簡體   English   中英

引用從AppDelegate中的StoryBoard創建的TabbarController?

[英]Referencing TabbarController created from StoryBoard in AppDelegate?

我有一個帶有初始登錄屏幕的標簽欄應用。 tabbarController設置為Storyboard中具有1個VC的初始視圖,該VC中還嵌入了navigationController。

我實例化了一個loginVC,並在AppDelegate中將其設置為rootViewController。 用戶成功從loginVC登錄后,我需要切換到tabbarController。 我會嘗試獲取對tabbarcontroller的引用並將其設置為新的rootviewcontroller嗎? 如果是這樣,我很難弄清楚該怎么做:/

AppDelegate中

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    if NSUserDefaults.standardUserDefaults().objectForKey("OAuth") == nil {

        self.window = UIWindow(frame:UIScreen.mainScreen().bounds)

        var storyboard = UIStoryboard(name: "Main", bundle: nil)

        var loginVC = storyboard.instantiateViewControllerWithIdentifier("LOGIN_VC") as LoginVC


        self.window?.rootViewController = loginVC
        self.window?.makeKeyAndVisible()
    } 

    return true
}

用戶成功登錄后將調用此方法

  func dismissLoginVC() {
    var tabbarController = self.storyboard?.instantiateViewControllerWithIdentifier("TABBAR") as UITabBarController

    self.presentViewController(tabbarController, animated: true, completion: nil)

    let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
    appDelegate.window?.rootViewController =  tabbarController

}

我知道問題在於它只是創建了一個新的tabbarcontroller,而不是引用在Storyboard中設置為initialView的現有tabbarController。 這似乎可行,但導航欄中缺少其他項目。

感謝您指出正確的方向!

我認為您應該更改自己的應用結構。 將標簽欄控制器保留為情節提要中的初始視圖控制器,並在第一個選項卡中以控制器的viewDidAppear方法以模態方式(無動畫顯示)登錄控制器-這將是用戶首先看到的內容。 當您關閉它時,您將回到第一個選項卡中的該控制器。 使用這種方法,您在應用程序委托中不需要任何代碼。

暫無
暫無

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

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