0

我想使用以下代码使用我自己的字体自定义所有按钮:

// 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。谢谢你...

4

4 回答 4

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];
    }
}
于 2013-09-20T17:45:22.027 回答
1

这意味着,customButton 不是按钮,它是 UILabel。UILabel 没有 titleLabel,这就是你得到这个错误的原因。检查 .tag == 1 并且它的类是 UIButton。如果是,您可以更改字体,就像您所做的那样。

于 2013-09-20T17:44:30.213 回答
1

这个问题已经被问过了,所以我将引用另一个线程的答案。

" 如果你使用 IBOutletCollection 那么这应该是直接的。

@property (nonatomic, retain) IBOutletCollection(UIButton) NSArray *buttons;

将按钮连接到此插座系列,然后使用以下方法一次性更改字体,

[self setValue:[UIFont fontWithName:@"Helvetica" size:30] forKeyPath:@"buttons.font"];

"

这将更改连接到 IBOutletCollection 的所有按钮字体

于 2013-09-20T17:44:35.550 回答
0

try this

[button.titleLabel setFont:[UIFont boldSystemFontOfSize:13]];
于 2015-09-02T09:39:49.647 回答