我想使用以下代码使用我自己的字体自定义所有按钮:
// Custom fonts for button with tag
for (UIButton *customButton in [[self view] subviews]) {
if (customButton.tag == 1) {
customButton.titleLabel.font = [UIFont fontWithName:@"OpenSans-Regular" size:14];
}
}
但我在调试器控制台上收到此错误消息:
2013-09-21 00:33:33.160 Test[794:907] -[UILabel titleLabel]: unrecognized selector sent to instance 0x1dda8d80
2013-09-21 00:33:33.165 Test[794:907] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UILabel titleLabel]: unrecognized selector sent to instance 0x1dda8d80'
我做错了什么?我正在使用XCode 4.6.3并以iOS6为目标。谢谢......
答案 0 :(得分:2)
您发送消息titleLabel
的对象不是UIButton
,它已经UILabel
且标签= 1,您需要确保访问UIButton
对象:
for (UIButton *customButton in [[self view] subviews]) {
if ((customButton.tag == 1) && ([customButton isKindOfClass:[UIButton class]])) {
customButton.titleLabel.font = [UIFont fontWithName:@"OpenSans-Regular" size:14];
}
}
答案 1 :(得分:1)
这意味着,customButton不是一个按钮,它是一个UILabel。 UILabel没有标题标签,这就是你得到这个错误的原因。检查.tag == 1是否为UIButton。如果是,你可以改变字体,就像你一样。
答案 2 :(得分:1)
这个问题已经被问到了,所以我只想引用其他帖子的答案。
” 如果你使用IBOutletCollection,那么这应该是直接的。
@property (nonatomic, retain) IBOutletCollection(UIButton) NSArray *buttons;
将按钮连接到此插座集合,然后使用
一次性更改字体[self setValue:[UIFont fontWithName:@"Helvetica" size:30] forKeyPath:@"buttons.font"];
“
这将改变连接到IBOutletCollection的所有按钮字体
答案 3 :(得分:0)
试试这个
[button.titleLabel setFont:[UIFont boldSystemFontOfSize:13]];