当用户使用以下代码按下按钮时,我正在尝试更改按钮的标题:
- (IBAction) hideKB: (UIButton *) sender {
sender.titleLabel.text = @"↓";
}
但是,当我点击应用程序崩溃时,我无法理解原因。
删除发件人的东西,按钮可以正常工作。
答案 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];