#objective-c #xcode
#objective-c #xcode
Вопрос:
Возможно, я перепутал настройки или что-то еще, когда допустил несколько промахов при нажатии горячих клавиш или ошибок. Не уверен, но обычно мне удавалось щелкнуть ctrl и перетащить к «Владельцу файла», и ранее созданные мной выходы отображались соответствующим образом.
Теперь это не так. Не уверен, как это исправить.
Комментарии:
1. Теперь отображается только «делегировать».
Ответ №1:
«… обычно я мог щелкнуть ctrl и перетащить к «Владельцу файла»»
После добавления дополнительных IBOutlet
элементов в ваш класс контроллера вы обычно устанавливаете их в Interface Builder, перетаскивая из объекта controller в элемент view, а не наоборот. (Здесь объектом контроллера обычно является File's Owner
«Приложение» или созданный пользовательский объект контроллера).
Реже вы можете перетащить из самих представлений в объект (ы) контроллера или в другие объекты представления, чтобы задать такие IBOutlet
объекты для конкретного класса, как delegate
, и / или dataSource
, menu
, formatter
и т.д. Например, NSTextField
добавляет a delegate
и a formatter
IBOutlet
к NSView
‘s menu
и nextKeyView
IBOutlet
s.
Итак, вы можете захотеть дважды проверить, что вы перетаскиваете в правильном направлении для рассматриваемого объекта.
Если вы знаете, что перетаскиваете в правильном направлении, а Interface Builder работает не так, как обычно, есть пара вещей, которые вы могли бы попробовать.
Во-первых, если вы добавили дополнительные IBOutlets в свой класс контроллера и пытаетесь подключить их в Interface Builder, дважды проверьте, действительно ли вы указали правильный класс для нужного вам объекта view. Например, чтобы добавить новый IBOutlet, я иногда копирую существующую строку, скажем IBOutlet NSTextField *textField;
, а затем вставляю ее. Затем я бы изменил имя на tableView
(с намерением IBOutlet
подключиться к NSTableView
), но я забуду изменить NSTextField
на NSTableView
. Поэтому, когда я захожу в Interface Builder и пытаюсь «подключить» IBOutlet, перетаскивая из класса контроллера в NSTableView
, всплывающее меню не отображается, поскольку табличное представление и текстовое поле — это два разных вида объектов.
Во-вторых, вы могли бы опубликовать содержимое вашего файла .h. Возможно, вы забыли ;
или иным образом создали возможную ситуацию, которая приводит к неполному завершению синтаксического анализа файла .h (с помощью Xcode, который затем передает результаты в Interface Builder). Когда это происходит, это может помешать отображению многих IBOutlets и т.д. В IB. Вы также можете попробовать скомпилировать свой код как есть, чтобы помочь выяснить, в чем кроются проблемы. Я иногда делал это сам.
Ответ №2:
Не уверен, есть ли сочетание клавиш, которое могло бы вызвать такое поведение, но просто для уверенности вам следует проверить, отображаются ли розетки, которые вы ожидаете увидеть, в инспекторе подключений (правый ящик утилит). Имейте в виду, что эта панель изменяется при выборе элементов в вашем проекте.
Если вы видите правильные выходы в инспекторе и по-прежнему не получаете желаемого поведения ctrl click, я бы попробовал повторно открыть ваш проект, перезапустить XCode или найти удалить файл XCode prefs.
Удачи!
Комментарии:
1. Я получаю «Новый ссылочный выход».
Ответ №3:
У меня была такая же проблема:
- Я добавил файл TableViewController в проект Xcode.
- Я добавил соответствующие свойства IBOutlet в соответствующий файл заголовка.
- Я добавил TableViewController в IB.
- Я добавил элементы управления в TableView в IB.
Но я не смог прикрепить элементы управления в IB к выходам. Проблема заключалась в том, что я не связал класс TableViewController в IB с классом, который я создал в Xcode. Решение: Укажите пользовательский класс для TableViewController в инспекторе идентификации в IB.