我想改變兩個子視圖作爲按鈕被點擊,子視圖是由StoryBoard創建的,每個子視圖都有一個按鈕,點擊按鈕會帶來另一個子視圖並隱藏當前視圖。 但是我發現當子視圖調用removeFromSuperview()時,它會自動發佈,如果我想在以後使用這個子視圖,我需要一個var來指向它。 這裏是我的代碼:如何在調用removeFromSuperview後防止子視圖自我釋放?
class ViewController: UIViewController {
@IBOutlet weak var secondView: UIView!
@IBOutlet weak var firstView: UIView!
var temp1: UIView?
var temp2: UIView?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
temp1 = firstView
temp2 = secondView
secondView.removeFromSuperview()
}
@IBAction func moveToSecond(_ sender: UIButton) {
firstView.removeFromSuperview()
view.insertSubview(secondView, at: 0)
secondView.isUserInteractionEnabled = true
}
@IBAction func moveToFirst(_ sender: UIButton) {
secondView.removeFromSuperview()
view.insertSubview(firstView, at: 0)
firstView.isUserInteractionEnabled = true
}
}
沒有兩種溫度變種,子視圖將removeFromSuperview後釋放,並導致未來insertSubview崩潰,因爲它是零。 那麼,如何防止子視圖自動釋放? 有沒有另外一種方法來改變StoryBoard優雅創建的兩個子視圖?
我的錯誤,我沒有注意到插座是弱的,一切都合理,removeFromSuperview時,沒有強點留給子視圖,比它自動釋放。
嘗試隱藏顯示您的觀點 –