Вопрос

В методе 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];
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top