Проблема XCode и Interface Builder: невозможно подключить элементы интерфейса через IBOutlet - PullRequest
0 голосов
/ 22 апреля 2011

Возможно, я испортил настройку или что-то в этом роде, когда сделал несколько ошибок или горячих клавиш.Не уверен, но обычно я был в состоянии нажать Ctrl + щелчок и перетащить к «Владельцу файла», и выходы, которые я сделал ранее, показывались бы соответственно.Не уверен, как это исправить.

Ответы [ 3 ]

1 голос
/ 22 апреля 2011

"... обычно я был в состоянии нажать Ctrl + перетащить на " Владелец файла ""

После добавления дополнительных IBOutlet s к вашемукласс контроллера, вы обычно устанавливаете их в Интерфейсном Разработчике, перетаскивая из объекта контроллера в элемент просмотра, а не наоборот.(Здесь объектом контроллера обычно является File's Owner, «Приложение» или экземпляр созданного пользовательского объекта контроллера.)

Реже можно перетащить из самих представлений в объект (ы) контроллера или другие объекты представления для установки специфичных для класса IBOutlet s, таких как delegate и / или dataSource, menu, formatter и т. Д. Например, NSTextField добавляет delegate и formatter IBOutlet к NSView menu и nextKeyView IBOutlet с.

Итак, вы можете перепроверить, что выперетаскиваете в правильном направлении для рассматриваемого объекта.

Если вы знаете, что перетаскиваете в правильном направлении, и Interface Builder не работает, как обычно, есть пара вещей, которые вы могли быtry.

Во-первых, если вы добавили дополнительные IBOutlets в ваш класс контроллера и пытаетесь подключить их в Интерфейсном Разработчике, перепроверьте, что вы фактически указали правильный класс для нужного объекта представления.Например, чтобы добавить новый IBOutlet, я иногда копирую существующую строку, скажем IBOutlet NSTextField *textField;, и затем вставляю ее.Затем я бы изменил имя на tableView (с намерением подключить IBOutlet к NSTableView), но я забуду изменить NSTextField на NSTableView.Поэтому, когда я перехожу к Интерфейсному Разработчику и пытаюсь «подключить» IBOutlet путем перетаскивания из класса контроллера в NSTableView, не будет отображаться всплывающее меню, так как табличное представление и текстовое поле - это два разных типа объектов..

Во-вторых, вы можете опубликовать содержимое вашего .h файла.Возможно, вы забыли ; или иным образом создали возможную ситуацию, которая приводит к тому, что синтаксический анализ файла .h (с помощью XCode, который затем передает результаты в Интерфейсный Разработчик) завершается неудачно.Когда это происходит, это может помешать появлению многих IBOutlets и т. Д. В IB.Вы также можете попробовать скомпилировать свой код, чтобы выяснить, в чем проблема.Я иногда делал это сам.

0 голосов
/ 26 марта 2013

У меня была та же проблема:

  1. Я добавил файл TableViewController в проект Xcode.
  2. Я добавил правильные свойства IBOutlet в соответствующий файл заголовка.
  3. Я добавил TableViewController в IB.
  4. Я добавил элементы управления в TableView в IB.

Но я не мог прикрепить элементы управления в IB к розеткам.Проблема заключалась в том, что я не связывал класс TableViewController в IB с классом, который я создал в Xcode.Решение. Укажите пользовательский класс для TableViewController в инспекторе удостоверений в IB.

0 голосов
/ 22 апреля 2011

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

Если вы видите правильные выходы в инспекторе и по-прежнему не получаете желаемого поведения ctrl + click, я бы попробовал повторно открытьваш проект, перезапуск XCode или поиск + удаление файла настроек XCode.

Удачи!

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