Не удается подключить IBOutlet в Интерфейсном Разработчике - PullRequest
25 голосов
/ 17 ноября 2009

У меня странный опыт. Я создаю приложение iPhone любого типа, добавляю UIViewController с Xib-файлом. Я могу отредактировать xib-файл с помощью элементов управления и посмотреть, как они отображаются при запуске. Теперь я пытаюсь добавить несколько IBOutlets в контроллер, поэтому я добавляю их в файл .h, синтезирую в файл .m. Затем я направляюсь в Interface Builder, чтобы соединить розетки. Я перетаскиваю UILabel в UIView, а затем пытаюсь подключить владельца файла (который является моим пользовательским UIViewController), но все, что я могу выбрать, когда пытаюсь подключиться к UILabel, - это «представление», что явно неверно. Поэтому я не могу подключить IBOutlets к их элементам управления в Интерфейсном Разработчике.

Есть идеи?

Ответы [ 19 ]

42 голосов
/ 14 февраля 2010

Я сделал комбинацию вещей в этой теме, и я наконец-то добился успеха.

В Интерфейсном конструкторе (не xcode)

  1. Файл-> Перезагрузить все файлы классов
  2. Файл-> Чтение файлов классов (выберите MyClass.h)
  3. Переподключить владельца файла по
    а. Установка класса в «MyClass»
    б. Повторное подключение представления к представлению владельца файла

Теперь все нормализовалось. Weird.

Надеюсь, это поможет больше, чем смущает; -)

6 голосов
/ 23 июля 2012

Была такая же проблема.

Исправлено путем двойной проверки атрибута «Класс» моего владельца файла в Инспекторе удостоверений.

6 голосов
/ 28 декабря 2009

В Interface Builder File-> Read Files Class и укажите его на класс владельца вашего файла. Это исправило это для меня.

4 голосов
/ 17 ноября 2009

Вы уверены, что Владелец файла правильно настроен на ваш пользовательский UIViewController и что вы сохранили свой .h файл после добавления ключевого слова IBOutlet в переменную экземпляра и собственность?

3 голосов
/ 01 октября 2011

У меня была такая же проблема для самого длинного. Смена владельца моего файла «Тип» на «MyClassViewController» вместо «UIViewController» в окне идентификации класса устранила мою проблему. Это имеет смысл, поскольку тип владельца файла UIViewController показывает только те свойства, которые относятся к базовому классу. Изменение типа на MyClassViewController дает доступ к его выходам и всем унаследованным экземплярам. Надеюсь, это поможет!

3 голосов
/ 05 декабря 2009

Вы удостоверились, что определяете свои выходы в своем файле .h как соответствующий тип? Если вы пытаетесь подключить текстовое поле в IB, тогда ваш .h файл должен выглядеть примерно так ...

IBOutlet UITextField    *MyTextField;

Убедитесь, что типом является UITextField (или UITextView и т. Д.). Если вы введете их как NSString или что-то не то, то вы не сможете подключить их в Интерфейсном Разработчике ....

3 голосов
/ 29 ноября 2009

У меня была почти такая же проблема, как и у вас. Я не знаю, решили ли вы свою проблему еще, но мое состояло в том, что я изменил имена всех классов, включая viewcontroller, но имя владельца файла остается неизменным. Итак, я дважды щелкнул по владельцу файла -> щелкните по i в открывшемся окне -> изменил имя в поле Class на новое имя viewcontroller. Тогда это сработало. Может быть, вы хотите попробовать еще раз и посмотреть, работает ли он. Удачи.

3 голосов
/ 31 января 2011

Если вам не удалось подключить элементы управления пользовательского интерфейса к коду с помощью щелчка правой кнопкой мыши (или CTRL) -> в раскрывающемся списке, есть другой способ. В конструкторе интерфейсов нажмите и удерживайте клавишу CTRL, наведите курсор мыши на «Владелец файла» в главном окне Интерфейсного конструктора на элемент управления пользовательского интерфейса (метка, кнопка и т. Д.). Список dpopdown со всеми определенными вами розетками будет добавлен. Просто выбор нужен один!

2 голосов
/ 11 октября 2010

File->Read Class Files (select MyClass.h) Сделал работу за меня.

2 голосов
/ 11 августа 2015

XCode -> Product -> Clean

работал для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...