2013-08-09 8 views
0

Я пытаюсь использовать некоторые пользовательские кнопки на устройстве iOS. И вот что я сделал: я добавил UIButton на Storyboard и изменил его тип на Custom. После этого я изменил изображение кнопки по умолчанию на вкладке «Attributes Inspector». Затем я использовал следующие две строки кода, чтобы установить статус кнопки:Несколько пользовательских кнопок, только один отображается корректно

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [self.button1 setImage:[UIImage imageNamed:@"unclicked.png"] forState:UIControlStateNormal]; 
    [self.button1 setImage:[UIImage imageNamed:@"clicked.png"] forState:UIControlStateHighlighted]; 
} 

Это прекрасно работает на симуляторе. Таким образом, я скопировал эту кнопку на раскадровке и вставлю еще два. Конечно, я удалил их ссылку на button1 и отнес их к еще двум вновь созданным выводам UIButton в файле заголовка контроллера представления и синтезировал их в файле .m. И я прилагаю следующие строки кода выше:

... 
    [self.button2 setImage:[UIImage imageNamed:@"unclicked.png"] forState:UIControlStateNormal]; 
    [self.button2 setImage:[UIImage imageNamed:@"clicked.png"] forState:UIControlStateHighlighted]; 

    [self.button3 setImage:[UIImage imageNamed:@"unclicked.png"] forState:UIControlStateNormal]; 
    [self.button3 setImage:[UIImage imageNamed:@"clicked.png"] forState:UIControlStateHighlighted]; 
    ... 

Все кажется нормальным, на Storyboard. Но после запуска симулятора можно отобразить только изображение button3. Остальные два исчезли и показали только что-то вроде c... Как я могу заставить три кнопки вести себя правильно? Я изо всех сил старался, но ничего не добился. Может ли кто-нибудь мне помочь? Огромное спасибо.

+0

Я бы перепрофилировал ваши связи в StoryBoard и увидел, что все подключено правильно. А затем установите точку останова и посмотрите, что происходит в коде. – geekchic

+0

@nikhitadkslfslg Я пробовал прокомментировать весь код и просто использовал изображение по умолчанию, установленное в инспекторе, с помощью раскадровки. И только изображение кнопки «button3» отображается правильно. Я думаю, что может быть что-то не так, когда я вставляю две другие кнопки. Но я проверяю инспектора и не могу найти что-то ценное. – Dreamer

+1

Если вы копируете и вставляете кнопки в раскадровке, убедитесь, что они не копируют соединения (это означает, что все три кнопки будут установлены на «button3») – bachonk

ответ

1

Я понял, что означает «c ..». Это название моей кнопки. Когда изображение не может быть загружено, вместо него будет отображаться текст названия вашей кнопки.

Я решил проблему, сняв флажок «Использовать автозапуск» на вкладке «Инспектор файлов» в Xcode. И после того, как я запустил симулятор без этой опции проверки, кнопка отлично показывается.

После того, как изображение кнопки вернулось, я также заметил, что код кажется перестроен, и все соединения пользовательского интерфейса из раскадровки в мой код исчезли. Поэтому я их снова подключу. Честно говоря, я не знаю точной причины этого. Я думаю, это потому, что если вы вставляете кнопку с помощью «Использовать автоспуск», то ограничения макета для недавно вставленных кнопок неверны. Во всяком случае, я все еще не совсем понимаю, как это происходит. Надеюсь, кто-то, кто это знает, сможет это объяснить.