2016-07-05 145 views
0

在我的HomeViewController中,我有兩個segue,一個單擊時激活單元格,一個單擊條形按鈕項目時單擊join list。當單擊欄按鈕項目時,我想檢查用戶是否已登錄。如果用戶沒有登錄,我想讓LoginViewController接口出現,如果他登錄了,我想讓joinViewController的接口出現。我從參加INTEM到joinViewController按住Ctrl創建從故事板的連接SEGUE,這是我的代碼快速關閉視圖

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

     if segue.identifier == "detail" { 
     var detailScene=segue.destinationViewController as! DetailViewController 
     if let indexPath=self.table.indexPathForSelectedRow{ 
      let selectedPerson=listPerson[indexPath.row] 
      detailScene.person=selectedPerson 
     }} 

     else 
     if segue.identifier == "join"{ 

      if !userLoggedIn{ 
       let vc : AnyObject! = self.storyboard!.instantiateViewControllerWithIdentifier("LoginViewController") 
       self.presentViewController(vc as! UIViewController, animated: true, completion: nil) 

      } 

     } 

     } 

一切工作正常,但在LoginViewController我說,IBAction爲你關閉該視圖

class LoginViewController: UIViewController { 
    @IBAction func dismissView(sender: AnyObject) { 
     self.dismissViewControllerAnimated(true, completion: nil) 

當按鈕被點擊時,加載joinViewController而不是homeViewControlled。我做了乾淨的工作,我該如何解決解僱按鈕?

+0

你可以嘗試在你的'HomeViewController'中重寫'shouldPerformSegueWithIdentifier'並在那裏移動登錄邏輯。如果未登錄,則返回'false',否則返回true。希望這可以幫助。 – riik

回答

0

如果要動態選擇要呈現的segue,則不應將其設置爲UIBarButtonItem。我的建議是將兩個segueHomeViewController拖到LoginViewControllerJoinViewController,名稱爲和joinSegue

UIBarButtonItem創建一個IBAction到您的HomeViewController。在代碼中,它應該看起來像這樣:

@IBAction func barButtonItemPressed(sender: AnyObject) { 
    if userLoggedIn { 
    self.performSegueWithIdentifier("joinSegue", sender: self) 
    } else { 
    self.performSegueWithIdentifier("loginSegue", sender: self) 
    } 
} 

我不確定你在問什麼解僱按鈕。但是,您不能覆蓋prepareForSegue以選擇在此階段顯示哪個UIViewController,因此它已經出現UIViewController