2012-12-01 53 views
1

我是UITextField的子類,並且想爲其右視圖屬性分配一個自定義按鈕。 我在子類的setFrame中設置了按鈕。如何正確設置子類的超類屬性

我的文本字段在ViewController中有它們的出口連接,並且在Interface Builder中的Identity Inspector中設置了我的子類。

問題是我的自定義按鈕沒有出現。

我試着克服這個問題,並在我的子類中創建了一個setupRightView方法。 然後,當我從View Controller的outlet屬性上調用setupRightView - 瞧 - 一切都很好!

我對Objective-C相當陌生,我想我正在用對象模型犯一些愚蠢的錯誤。 爲什麼我不能在我的子類中正確設置rightView屬性?

回答

1

你記得要做到這一點:

self.rightViewMode = UITextFieldViewModeAlways;

該屬性默認設置爲UITextFieldViewModeNever,因此如果不包含該行,則不會看到按鈕。

編輯後:我檢查了把我的代碼放在setFrame中,它沒有在那裏工作 - 不知道爲什麼。它運行良好,如果我把它放在awakeFromNib。

-(void)awakeFromNib { 
    UIButton *myButton = [UIButton buttonWithType:2]; 
    self.rightView = myButton; 
    self.rightViewMode = UITextFieldViewModeAlways; 
} 
+0

是的,那在我的代碼也工作!謝謝你的好建議。無價! – kr45ko

+0

如果您遵循這一點,該解決方案可以在初始設置中正常工作。我認爲一旦右側視圖設置正確,我可以從我的子類訪問並更改它,但事實並非如此。我堅持事實我不能應用任何自定義邏輯來更改我的子類中的按鈕圖像。仍然不知道如何正確設置我的子類的超類屬性。 – kr45ko

+0

我剛剛在我的工作場所嘗試了使用awakeFromNib的代碼,所有的東西都只是缺陷。考慮正確的答案。我將調查可能是不同行爲的原因,但我認爲這是一個配置問題。非常感謝! – kr45ko