2014-10-29 2 views
0

Я создаю простую кнопку и добавляю ее в качестве основного представления. Однако это не проявляется.iOS: UIButton не отображается

Это код для настройки его:

UIButton* contactButton = [[UIButton alloc] init]; 
contactButton.titleLabel.text = @"Contact Developer"; 
[contactButton sizeToFit]; 
[self.view addSubview:contactButton]; 
NSLog(@"X: %f || Y: %f || Width: %f || Height: %f", contactButton.frame.origin.x, contactButton.frame.origin.y, contactButton.frame.size.width, contactButton.frame.size.height); 

Как вы уже заметили, я поместил немного отладки кода в конце, чтобы увидеть положение и размеры кнопки. Они: X: 0, Y: 0, Ширина: 30, Высота: 34

Это означает, что он должен появляться в верхнем левом углу, но это не так. Что не так?

+2

Не устанавливайте ярлык заголовка напрямую. Используйте 'setTitle: forState:' вместо – Alladinian

ответ

1

Одной из возможных причин этого заключается в том, что вы использовали titleLabel непосредственно. Вместо этого используйте метод setTitle:forState:.

Обязательно проверьте настройку backgroundColor в качестве шага отладки, чтобы убедиться, что он появился.


Редактировать Как и другие предложили, попробуйте использовать buttonWithType: вместо [[UIButton alloc] init]. Я предлагаю использовать UIButtonTypeSystem вместо UIButtonTypeCustom.

+0

Спасибо. Это сделало кнопку видимой, однако всякий раз, когда я нажимаю на нее, она не затухает, как другие кнопки. В чем проблема? – Sam

+0

Это может быть связано с тем, как вы '' alloc'''it. Попробуйте '' 'buttonWithType:' '', как предложены другие ответы, но я предлагаю использовать '' 'UIButtonTypeSystem''' вместо' '' UIButtonTypeCustom'', потому что у вас нет никакого пользовательского поведения. –

+1

Большое спасибо. Это решило. Я также использовал 'contactButton.tintColor', чтобы изменить пользовательский синий цвет на более приличный. – Sam

1

Вы должны инициализировать кнопку, используя следующее:

UIButton* contactButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
1

Попробуйте построения вашей кнопки другой путь:

UIButton* contactButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
contactButton.backgroundColor = [UIColor redColor]; 
contactButton.titleLabel.text = @"Contact Developer"; 
[contactButton sizeToFit]; 
[self.view addSubview:contactButton]; 
1

Вы уверены, что кнопка не отображается?

Я думаю, что вы неправильно устанавливаете заголовок кнопки и из-за того, что по умолчанию UIButton имеет чистый фон и белый заголовок, он не отображается, если ваш супервизор тоже белый.
Вместо установки:
contactButton.titleLabel.text = @"Contact Developer"
использование:
[contactButton setTitle:@"Contact Developer" forState:UIControlStateNormal]

Но вы можете сначала попытаться установить backgroundColor к кнопке, другим, что SuperView, чтобы увидеть, если он добавлен.

Надеюсь, это поможет!
(Извините за мой английский, если у меня есть ошибка)

+0

Спасибо, это в значительной степени то, что предложил Моханнад А. Хассан, и это сработало очень хорошо. – Sam

+0

Да, извините за «дублирование», я не видел его ответа до тех пор, пока не разместил свой. –