2017-08-12 54 views
0

在我的主視圖中,我從其他兩個視圖收集數據。我從主視圖開始,轉到下一個視圖來獲取數據並返回到原始視圖。然後我轉到最後一個視圖並獲取更多數據,但是當我返回時,原始數據消失了。如何在離開前保存它?如何在離開視圖時保存變量

我試過使用viewWillDisappear但它不工作。這是一個好方法,如果是這樣,我該如何去使用它?

這些數據的兩片通過賽格瑞進來:

var homeTeamName = String() 
var awayTeamName = String() 

我做這個當我加載:

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. } 
    HomeName.text = homeTeamName 
    HomeImage.image = UIImage(named:homeTeamName) 
    AwayName.text = awayTeamName 
    AwayImage.image = UIImage(named:awayTeamName) 

} 

Note:一切都與遠從一個視圖來了,一切都與家從另一個來。

現在我保存這樣的:

override func viewWillDisappear(_ animated: Bool) { 
    UserDefaults.standard.set("value", forKey: "homeTeamName") 
} 

檢索這樣的:

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib.  
    UserDefaults.standard.string(forKey: "homeTeamName") 
} 

仍然沒有工作。

在此先感謝!

+0

您是否嘗試過委託模式? –

+0

你可以使用appdelegate爲你可以檢查我以前的答案在這裏https://stackoverflow.com/questions/45407423/sharing-data-between-multiple-view-controllers-without-segue-swift-3/45408261#45408261 。 – luckyShubhra

+0

你解決了這個問題嗎? –

回答

0

當您離開時,您無法在ViewController類中存儲變量。一切都可能被破壞。由於您只需存儲兩個字符串,最好的方法就是使用UserDefaults。

存儲

UserDefaults.standard.set("value", forKey: "homeTeamName") 

檢索

​​

使用該打印日誌

print("printingValue\(UserDefaults.standard.string(forKey: "homeTeamName"))") 

希望它能幫助!

+0

我在什麼時候運行這些代碼行?我會存儲在viewWillDisappear中,然後檢索視圖加載?另外,我將最多再有20個我想要存儲的字符串。我仍然應該使用相同的方法嗎? –

+0

是的,您必須存儲在viewWillDisappear中,並在viewDidLoad中檢索。此外,你可以在UserDefaults中存儲很多字符串。您可以爲此目的或以任何您想要的方式創建單獨的課程 –

+0

已修改原始帖子。我這是你的意思? –

-1

哎寫這篇文章的數據存儲

override func viewWillDisappear(_ animated: Bool) { 
    let userDefault = UserDefaults.standard 
    userDefault.set("value", forKey: "homeTeamName") 
} 

,並寫這爲數據Retriving寫這個

override func viewWillAppear(_ animated: Bool) { 
    let userDefault = UserDefaults.standard 
    userDefault.value(forKey: "homeTeamName") 
} 

我認爲它可以幫助ü。

+0

什麼是.standard? –

+0

它是保存數據的首選字典,當你卸載應用程序時它會被刪除。 Userdefaults.standard是首選詞典。而userdefault是對象。並寫入代碼到viewwilldisappear和viewwillappear –

+0

我想我發現我的問題。當我在viewWillAppear中檢索時,是否需要執行此操作:homeTeamName = userDefault.value(forKey:「homeTeamName」) –

相關問題