Первый предложил создать IBPlugin, что означало бы, что мои привязки будут доступны в Инспекторе привязок.Затем я мог бы связать представление с контроллером, используя IB.Очевидно, что IBPlugins не поддерживаются в Xcode 4, так что вы не можете их видеть.
Правильно.Интерфейсный Разработчик мертв;Да здравствует редактор пера XCode (который они до сих пор называют Интерфейсным Разработчиком).
С исчезновением IB, поэтому IBPlugins.
Я также предполагаю (возможно, неправильно), что IBPluginsбольше не поддерживаются, потому что в наши дни есть лучший способ сделать такие вещи?
Нет.
Второй вариант заключался в том, чтобы программно привязать контроллер к представлению.Я немного сбит с толку относительно того, как именно я бы достиг этого.
Отправить представление a bind:toObject:withKeyPath:options:
сообщение .
Было бы этотребует подклассов NSObjectController, чтобы я мог добавить вызовы для привязки к представлению?
Не NSObjectController, но что-то, что либо владеет пером (например, контроллер окна или контроллер представления) или является верхним уровнемобъект внутри него (например, делегат приложения в кончике MainMenu).
Нужно ли добавить что-либо в представление для поддержки этого?
См. ниже.
Некоторые примеры, которые я видел, говорят, что вам нужно переопределить метод связывания, а другие говорят, что вы этого не делаете.
Вы привыкли, для невзрачных просмотров(представления всегда работали без переопределения), но не больше.Вам больше не нужно переопределять метод bind::::
.
Я не знаю, когда это изменилось, но я написал тестовое приложение для подтверждения текущего поведения (по состоянию на Snow Leopard иЛев).
Также я заметил, что некоторые примеры пользовательских представлений вызывают [self exposeBinding:@"bindingName"]
в инициализаторе.Из того, что я собираю из разных источников, это то, что связано с IBPlugins, и мне не нужно ничего делать, если я ими не пользуюсь.Это правильно?
Нет.
Вам не нужно переопределять bind::::
для привязки к любому KVC- / KVO-совместимому свойству, и вам не нужноотправить exposeBinding:
.
смущенно, документация гласит иначе : вы должны переопределить bind::::
и unbind:
, даже в представлениях, и что exposeBinding:
полезен для всего.
Все, что вам нужно сделать, чтобы создать доступную привязку, это реализовать свойство, совместимое с KVC / KVO.Если это синтезированный @property
, это сделано.В противном случае см. здесь .
Затем отправьте представлению / объекту сообщение bind::::
, чтобы фактически связать его, поскольку нет способа выставить привязку в редакторе пера.
TL; DR:
Просто реализуйте обычное свойство, и вы сможете связать его с a bind:toObject:withKeyPath:options:
сообщением (по крайней мере, в Snow Leopard и Lion).Вам больше не нужно отправлять exposeBinding:
из любого места.Вы не можете сделать так, чтобы пользовательские привязки отображались в редакторе пера в Xcode 4.