Подтвердить что ты не робот

Почему не отображается название UIButton?

В методе UIViewController viewDidLoad я делаю это:

UIButton *b = [[UIButton buttonWithType:UIButtonTypeRoundedRect] 
                                       initWithFrame:CGRectMake(0, 0, 100, 100)];

[b setTitle:@"Testing" forState:UIControlStateNormal];
[b setTitleColor: [UIColor blackColor] forState: UIControlStateNormal];
[self.view addSubview:b];                       // EDIT: should be 'b'
NSLog(@"button title: %@", [b titleLabel].text);

Кнопка отображается, но заголовок не отображается. Строка NSLog печатает "Тестирование" на консоли. Любые предложения о том, что я делаю неправильно?

4b9b3361

Ответ 1

Я не могу сказать вам, почему это не работает, но у меня есть решение:

UIButton *b = [UIButton buttonWithType:UIButtonTypeRoundedRect] ;        
b. frame = CGRectMake(0, 0, 100, 100);

[b setTitle:@"Testing" forState:UIControlStateNormal];
[b setTitleColor: [UIColor blackColor] forState: UIControlStateNormal];
[self addSubview:b];   

Отдельное создание кадра из выделения и инициализация кнопки.

Ответ 2

Проблема заключается в том, что

UIButton *b = [[UIButton buttonWithType:UIButtonTypeRoundedRect] 
                                       initWithFrame:CGRectMake(0, 0, 100, 100)];

buttonWithType возвращает инициализированный объект с автореализацией. Вы не можете отправить его initWithFrame снова, поскольку объект может быть инициализирован только один раз.

Задайте свой кадр отдельно:

b.frame = CGRectMake(0, 0, 100, 100);

Ответ 3

Сделайте это вместо:

UIButton *b = [UIButton buttonWithType:UIButtonTypeRoundedRect];
b.frame = CGRectMake(0, 0, 100, 100);
[b setTitle:@"Testing" forState:UIControlStateNormal];
[b setTitleColor: [UIColor blackColor] forState: UIControlStateNormal];
[self.view addSubview:b];  

Ответ 4

Дело в том, что вам нужно идти за [[UIButton alloc] initWithFrame:] или [UIButton buttonWithType:], вы не должны использовать оба вместе.

Ответ 5

Вы можете сделать следующее:

UIButton *b=[[UIButton alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];

b=[UIButton buttonWithType:UIButtonTypeRoundedRect];

[b setTitle:@"Button Title Here" forState:UIControlStateNormal];
[b setTitleColor:[UIColor blackColor] forState: UIControlStateNormal];
[self.view addSubview:b];

Ответ 6

У меня была такая же проблема, и в конечном итоге это был факт, что я устанавливал изображение, а не backgroundImage. Все было отлично, когда я это сделал:

[button setBackgroundImage:image forState:UIControlStateNormal];