Почему не отображается заголовок UIButton?
-
20-08-2019 - |
Вопрос
В методе viewDidLoad UIViewController я делаю это:
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 выводит на консоль «Тестирование».Есть какие-нибудь предложения о том, что я делаю неправильно?
Решение
Я не могу сказать вам, почему это не работает, но у меня есть решение:
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];
Отдельное создание кадра от выделения и инициализации кнопки.
Другие советы
Проблема заключается в
UIButton *b = [[UIButton buttonWithType:UIButtonTypeRoundedRect]
initWithFrame:CGRectMake(0, 0, 100, 100)];
buttonWithType
возвращает автоматически выпущенный инициализированный объект.Вы не можете отправить ему initWithFrame еще раз, поскольку объект можно инициализировать только один раз.
Установите его рамку отдельно:
b.frame = CGRectMake(0, 0, 100, 100);
Вместо этого сделайте это:
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];
Дело в том, что вам придется пойти на [[UIButton alloc] initWithFrame:]
или [UIButton buttonWithType:]
, вам не следует использовать оба вместе.
Вы можете сделать следующее:
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];
У меня была та же проблема, и в конечном итоге я устанавливал изображение, а не фоновое изображение.Все работало нормально, когда я сделал:
[button setBackgroundImage:image forState:UIControlStateNormal];