在单击事件中设置UIButton标题的问题

时间:2011-06-30 21:59:54

标签: iphone objective-c ibaction sender

当用户使用以下代码按下按钮时,我正在尝试更改按钮的标题:

- (IBAction) hideKB: (UIButton *) sender {
     sender.titleLabel.text = @"↓";
}

但是,当我点击应用程序崩溃时,我无法理解原因。

删除发件人的东西,按钮可以正常工作。

3 个答案:

答案 0 :(得分:4)

操作的正确方法签名是

- (IBAction)action:(id)sender

您的应用程序崩溃了,因为您的对象正在发送一条它不理解的消息。

尝试使用以下内容替换代码:

- (IBAction)hideKB:(id)sender {
    UIButton *button = (UIButton *)sender;
    [button setTitle:@"↓" forState:UIControlStateNormal];
}

您可能已经注意到我也更改了设置按钮标题的行。这是因为你不应该直接操纵UIButton的{​​{1}}属性,而应该使用如上所示的相应的setter方法。

修改:为了澄清,大多数控件都允许您使用点表示法来修改titleLabel的{​​{1}}属性。但是,text个实例支持不同的标题(以及图像和背景图像),具体取决于它们所处的状态。

如果你想知道为什么titleLabel可能处于几个不同的状态之一,你经常看到的一个很好的例子是“灰色”的按钮。这意味着这些按钮处于UIButton状态。您可以找到控件in the documentation的所有可能状态的列表。

答案 1 :(得分:0)

你可以试试:

[(UIButton *)sender setTitle: @"↓"" forState: UIControlStateNormal];

有关详细信息,请参阅setTitle:forState: in UIButton Class Reference

希望这有帮助。

答案 2 :(得分:0)

尝试使用

 - (void)setTitle:(NSString *)title forState:(UIControlState)state

e.g。

 [sender setTitle:"↓" forState:UIControlStateNormal];