2017-03-07 55 views
0

if語句我使用的是運行SEGUE。我有if語句在成功運行時打印消息。然而,SEGUE沒有運行,我不知道爲什麼。不順着接下去運行

override func viewDidLoad() { 
    super.viewDidLoad() 

    firstField.delegate = self 
    signUpButtonOutlet.isEnabled = false 
    // Do any additional setup after loading the view. 

    let fetchRequest: NSFetchRequest<Check> = Check.fetchRequest() 

    do { 
     //go get the results 
     let searchResults = try getContext().fetch(fetchRequest) 

     //I like to check the size of the returned results! 
     print ("num of results = \(searchResults.count)") 

     //You need to convert to NSManagedObject to use 'for' loops 
     for check in searchResults as [NSManagedObject] { 
      //get the Key Value pairs (although there may be a better way to do that... 
      print("the value was\(check.value(forKey: "isLoggedIn"))") 

      if (check.value(forKey: "isLoggedIn") != nil) { 
       self.performSegue(withIdentifier: "loggedInTrue", sender: self) 
       print("if statement ran") 
      } 


     } 


    } catch { 
     print("Error with request: \(error)") 
    } 

} 
+1

你有沒有試過將您performSegue代碼'viewDidAppear()'? –

+0

就像@MrugeshTank說,把你的segue在viewdidappear中,你不能在viewdidload上做segue – rudydydy

+0

這不是最好的方式來做到這一點,你應該真的把登錄狀態存儲在用戶默認值中,你可以在這裏檢查這個變量您的應用程序委託加載。然後顯示正確的控制器 – Devster101

回答

1

對於這一點,最好的辦法是檢查,如果用戶已經登錄後可以加載從的appDelegate了「的loggedIn」控制器。

所以對於例如,在應用程序委託的didFinishLaunchingWithOptions方法檢查用戶默認值如果登錄

以查看是否用戶0

顯然,對於這個工作,你需要在用戶實際登錄的的loggedIn變量設置爲true。像這樣,你必須要注意的是,改變YOURSTORYBOARDNAME您的實際故事板

UserDefaults.standard().setBool(true, forKey: "logged_in") 

一兩件事,你還必須設置控制器的標識在故事板

enter image description here

1

將登錄狀態存儲在viewDidLoad中並執行Segue中的viewDidAppear。如果登錄狀態爲true,則隱藏第一個ViewController。

override func viewWillAppear(_ animated: Bool) { 
    if (isloggedIn != false) { 
     self.view.isHidden = true 
    } else { 
     self.view.isHidden = false 
    } 
} 

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(true) 
    if (isloggedIn != false) { 
     self.performSegue(withIdentifier: "loggedInTrue", sender: self) 
    } 
} 

OR

dispatch_async(dispatch_get_main_queue()) { 
    self.performSegueWithIdentifier("loggedInTrue", sender: self) 
} 
+0

爲什麼我們在'viewdidload'中調用'performSegue'它的被調用或不調用 –

+0

在viewDidLoad中'performSegue'不會被調用。要在'viewDidLoad'中調用它,我們需要調用它像'dispatch_async(dispatch_get_main_queue())self.performSegueWithIdentifier(「loggedInTrue」,sender:self) }' –

+0

haha​​ ha,你已經有了答案,那麼爲什麼不必要的增加內存 –

相關問題