簡體   English   中英

使用編碼器aDecoder推送ViewController:NSCoder

[英]Push ViewController with coder aDecoder: NSCoder

我正在嘗試使用以下方法推送視圖控制器:

var vc2 = ViewController2()

self.navigationController?.pushViewController(vc2, animated: false

但是在第二個視圖控制器中,我有:

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}

但是我在第一個ViewController的Missing argument for parameter 'coder' in call中收到Missing argument for parameter 'coder' in call的錯誤Missing argument for parameter 'coder' in call 第一個視圖控制器中括號中的內容是什么?

有兩種方法可以解決此問題:

簡單的方法是,只需調用將nil傳遞給參數的函數:

var vc2 = ViewController2(nibName: nil, bundle: nil)

最好的方法是在類中創建便捷的初始化程序:

class ViewController2: UIViewController {
    required init(coder aDecoder: NSCoder) {
        fatalError("This class does not support NSCoding")
    }
    override init (frame : CGRect) {
        super.init(frame : frame)
    }
    convenience override init () {
        self.init(frame:CGRectZero)
    }
}

現在您可以致電:

var vc2 = ViewController2()
class ViewController2: UIViewController {
    convenience init () {
        self.init(nibName: nil, bundle: nil)
    }
} 

現在您可以調用ViewController2()

暫無
暫無

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

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