2

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

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

但是当我点击应用程序崩溃时,我不明白为什么。

删除发件人的东西,按钮没有问题。

4

3 回答 3

4

动作的正确方法签名是

- (IBAction)action:(id)sender

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

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

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

您可能会注意到,我还更改了设置按钮标题的行。这是因为您不应该直接操作 aUIButtontitleLabel属性,而是应该使用如上所示的适当的 setter 方法。

编辑:为了澄清,大多数控件将允许您使用点表示法来编辑texttitleLabel. 但是,UIButton实例支持不同的标题(以及图像和背景图像),具体取决于它们所处的状态。

如果您想知道为什么 aUIButton可能处于几种不同状态之一,那么您经常看到的一个很好的例子就是“灰显”的按钮。这意味着这些按钮处于UIControlStateDisabled状态。您可以在文档中找到控件的所有可能状态的列表。

于 2011-06-30T22:04:42.500 回答
0

您可以尝试:

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

更多信息可以参考UIButton 类参考中的 setTitle:forState:

希望这可以帮助。

于 2011-06-30T22:02:55.080 回答
0

尝试使用

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

例如

 [sender setTitle:"↓" forState:UIControlStateNormal];
于 2011-06-30T22:04:38.180 回答