簡體   English   中英

UIViewController子類的便捷初始化程序,帶有來自筆尖的實例?

[英]Convenience initialiser for UIViewController subclass with instance from nib?

我想初始化的子類UIViewController稱為TestController 我有這個快速班:

class TestController : UIViewController {

    let testString : String
    @IBOutlet weak var test: UITextField!

    required init(withString string: String) {

        self.testString = string
        super.init(nibName: nil, bundle: nil)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

}

我還有一個名為TestController的筆尖文件, 在此處輸入圖片說明

在它里面是UIViewController的實例。 文件的所有者為none(灰色的NSObject),設計器中的UIViewController實例的類在身份檢查器中設置為TestController。 有一個UITextField實例作為插座。

在此處輸入圖片說明

問題是控制器未從筆尖初始化(我認為),並且textField出口為nil。

我的目標是允許通過自定義初始化程序從nib中以編程方式初始化控制器實例。 我究竟做錯了什么?

您有兩個問題:首先,筆尖(或xib)創建不正確(在界面生成器中不應看到TestController )。 解決此問題的最簡單方法是重新創建它:New File-> Cocoa Touch Class-> UIViewController Create Subclass,並且不要忘記選中Also Create a XIB file

第二個問題是您沒有指定要加載的筆尖。 您應該在初始化程序的nibName參數中指定它:

super.init(nibName: "NewlyCreatedXib", bundle: nil)

解決兩個問題后,我相信您的代碼將正常運行。

暫無
暫無

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

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