[英]How can I use didSet to change the text of a UITextField (IBOutlet)?
我想在我傳遞的模型對象的DidSet中設置UITextField(IBOutlet)的文本值。
這里的代碼:
let manageSettingViewController: ManageSettingViewController = self.storyboard?.instantiateViewControllerWithIdentifier("ManageSettingViewController") as ManageSettingViewController
self.navigationController?.pushViewControllerCustom(manageSettingViewController)
manageSettingViewController.setting = setting
在manageSettingViewController的didSet中:
var setting: Setting? {
didSet
{
keyTextField.text = setting?.label
valueTextField.text = setting?.value
}
我該如何設置文字? 因為在這種情況下Xcode崩潰,因為“keyTextField是nil”:(
您正在實例化manageSettingViewController
之后設置manageSettingViewController.setting
- 此時,它尚未從nib / storyboard加載其視圖,因此它的所有IBOutlet
變量(可能是keyTextField
和valueTextField
)仍然是零。 這些文本字段在調用ManageSettingViewController
的viewDidLoad
方法時被連接起來。
您可以在設置之前更改didSet
以檢查可選插座,或通過可選鏈接進行分配:
didSet {
keyTextField?.text = setting?.label
valueTextField?.text = setting?.value
}
這樣可以避免崩潰,但也無法更改文本字段的內容。 您還必須為ManageSettingViewController
實現viewDidLoad
以檢查其setting
屬性並相應地設置其文本字段。
當然,這會復制didSet
的代碼。 如果您想從其他地方設置setting
並自動更新UI,那么該代碼可能仍然有用,但在加載UI之前, didSet
將無法幫助您更新UI。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.