2014-10-28 48 views
0

我正在用swift創建一個ios應用程序。我有一個UIViewController和從NSObject繼承的「UserManager」類。基本上,當用戶打開應用程序時,UIViewController中的代碼被執行。 UIViewController在UserManager中調用一個函數。當這個函數完成時,我希望執行一個segue(在我的代碼中稱爲「connectSegue」的segue)。我是一個初學者...在另一個類中使用快速UI調用segue

我做了什麼(而沒有工作!):

這裏是我的ViewController:

import UIKit 

var profileUser = UserManager() 

class ViewController : UIViewController{ 

override func viewDidLoad() {login()} 

func login()->Void {profileUser.createUser()} 

func handleSegue()->Void {self.performSegueWithIdentifier("connectSegue",sender: self)} 

} 

這裏是我的UserManager類:

import Foundation 

class UserManager: NSObject { 

//Some properties 

func createUser()->Void { 

//Some code 

var segueHandler = ViewController() 
segueHandler.handleSegue() 
} 
} 

我該怎麼做? 謝謝

回答

1

問題是你的UserManager正在創建一個ViewController的新實例,它不是調用UserManager的實例。

處理此問題的更好方法是在調用登錄後在您的ViewController中調用performSegueWithIdentifier。

一般來說,最好不要在非UI類中放置UI導航。如果只有用戶功能,UserManager會更有用,而不是UI的責任。如果UserManager異步執行其工作,那麼當工作完成時,您應該考慮使用通知返回給您的ViewController,以便它可以執行segue。

+0

我明白了,謝謝你的回答。這是我的第一個鏡頭,在登錄後調用performSegueWithIdentifier(),但沒有奏效,因爲login()沒有時間完成他的部分工作。所以我想看看如何使用通知來管理它。 – soling 2014-10-28 14:06:30

+0

檢查出http://stackoverflow.com/questions/2191594/send-and-receive-messages-through-nsnotificationcenter-in-objective-c – 2014-10-28 14:27:57

+0

謝謝你的麥克,我設法做到了! – soling 2014-10-28 14:34:37