2016-07-05 88 views
0

我是iOS - Swift中的新成員。我創建了簡單的應用程序,第一次登錄後"performSegueWithIdentifier"工作正常,但註銷後,我回到根視圖控制器,如果我再次登錄,"performSegueWithIdentifier"給我fetal error (crash)。我沒有從我的登錄視圖設置任何屬性。我不明白它第一次工作正常,第二次出錯。「performSegueWithIdentifier」給出致命錯誤

override func viewDidAppear(animated: Bool) { 
    super.viewDidAppear(animated) 
    self.login() 
} 

func login() { 
    if user == nil { 
     self.presentViewController(logInView, animated: false, completion: nil) 
    } else { 
     self.performSegueWithIdentifier("Home", sender: self) // Here I m getting error after logout when i log in again. 
    } 
} 
在我的第二個觀點

,註銷後我寫了這個:

self.navigationController?.popToRootViewControllerAnimated(false) 

錯誤我得到的是以下幾點:

fatal error: unexpectedly found nil while unwrapping an Optional value

我的故事板層次是: 導航控制器 - 視圖控制器(loginview) - TabbarController(HomeView) - 四個選項卡兩個視圖控制器和兩個TableViewControllers。 從TableViewController我打電話方法之一

self.navigationController?.popToRootViewControllerAnimated(假)

那麼它回來的ViewController(loginview),但如果我再次嘗試登錄到時候的TabBar視圖控制器不當下。我得到這個代碼如下:

print(「NextView =(storyboard.instantiateViewControllerWithIdentifier(」Home「))」)//這裏只有我得到胎兒的錯誤。

+1

Show.Your.Code。 – vadian

+0

當您註銷時,您設置了什麼作爲rootviewcontroller –

+0

您應該在登錄後更改rootviewcontroller。 –

回答

0

你可以改變這樣的根視圖控制器:

let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) // "Main" is storyboard name 
let viewController = mainStoryboard.instantiateViewControllerWithIdentifier("id") as UITabBarController 
    UIApplication.sharedApplication().keyWindow?.rootViewController = viewController; 
+0

Thnx,但這並沒有解決我的問題。 –