我在從不同視圖控制器調用數據時遇到問題。如何在關閉視圖後手動調用ViewDidAppear?
當應用程序啓動時,它進入1,並立即進入2作爲圖2是主視圖。然後 2將立即檢查是否有人之前註冊,結果如下:
A - 如果進入登錄視圖控制器結果負
乙 - 調用一個函數來在viewDidAppear照常下載數據(這是不是現在,我的問題)
我的問題是,當A發生,用戶將進入他的病人ID,並與服務器進行通信,它應該成功通過驗證,那麼它會解僱自己,並返回到瀏覽器2.
當它返回到視圖控制器2時,我期望我t照常運行viewDidAppear和DOWNLOAD DATA。
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
print("First view appeared")
let prefs = NSUserDefaults.standardUserDefaults()
//if an user has logged in
let isLoggedIn = prefs.integerForKey("ISLOGGEDIN") as Int
if (isLoggedIn != 1){
print("No user currently, so heading to login screen")
self.performSegueWithIdentifier("gotoLogin", sender: self)
}else{
print("ViewDidAppear: An user has been logged in")
let permissionToLoadData = prefs.integerForKey("ISLOGGEDIN")
if (permissionToLoadData != 1) {
print("Please grant permission to get data")
}else{
print("First view: connecting to database")
reportStatus()
socket.connect()
readDataFromSocket(){ data in
let json = JSON(data)
let nou = json[0].count
if nou > 0 {
print("Test(1st VC): grabbing data from database")
for var i=0; i<nou; ++i{
numberOfUsersExisting = nou
pSample += [Patient(id: json[0][i]["ID"].intValue, name: json[0][i]["Name"].stringValue, gender: json[0][i]["Gender"].stringValue, mileage: json[0][i]["Mileage"].doubleValue)]
pSample.sortInPlace({$0.globalPatientMileAge < $1.globalPatientMileAge})
}
print("Successfully grabbed data")
}else{
print("No user in the database")
numberOfUsersExisting = 0
}
}//readDataFromSocket
}//permission to load data
}
}//end of viewDidAppear
但是它沒有這樣做我所期待的,嗯,所以反正是有,我可以viewDidAppear(從視圖控制器2)調出登錄辭退視圖控制器動作之後吧?
你不知道。永遠不要手動調用生命週期方法。 – nhgrif
你是否確實在說有辦法做到這一點,但我們不應該這樣做?如果有的話,你介意告訴我該怎麼做到這一點? :) –
不可能。沒有機會,在將來的某個時候,我可能不得不維護你寫的代碼,我不會告訴你如何去做那些荒謬的做法。 – nhgrif