2012-12-01 148 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