Почему не отображается название 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 печатает "Тестирование" на консоли. Любые предложения о том, что я делаю неправильно?
Ответы
Ответ 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];