簡體   English   中英

ViewDidLoad中的快速更改方法

[英]Swift change method in ViewDidLoad

我正在嘗試使用以下代碼更改ViewDidLoad中的方法:

在課堂宣告中:

var nextValue: Int!

在ViewDidLoad中:

if nextValue == nil {
    print("Hi")
}   else if nextValue == 2 {
    print("Hello")
}

最后,該函數更改nextValue的值:

func buttonAction(sender: AnyObject) {
    self.performSegueWithIdentifier("nextView", sender: self)
    nextValue = 2    
}

當我從“ nextView”移回第一個視圖時,nextValue應該為2,但為零。 我究竟做錯了什么?

您對視圖生命周期的理解是錯誤的。

首先,在類聲明中使用nil值聲明變量。 然后,在viewDidLoad方法中檢查其值,最后通過一些按鈕操作更改其值。

但是,當您通過segue轉到nextView離開視圖控制器屏幕時,firstView將被釋放,並且當您再次表示它時,循環回到聲明級別。 由於您將變量值聲明為nil,因此它將始終顯示nil值。

如果要保留其值,則需要將其保存在其他位置,NSUserDefault似乎是存儲其值的不錯選擇。

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    nextValue = NSUserDefaults.standardUserDefaults().valueForKey("nextValue") as? Int

    if nextValue == nil {
        print("Hi")
    }   else if nextValue == 2 {
        print("Hello")
    }
}

func buttonAction(sender: AnyObject) {
    self.performSegueWithIdentifier("nextView", sender: self)
    nextValue = 2
    NSUserDefaults.standardUserDefaults().setInteger(2, forKey: "nextValue")    
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM