Несколько файлов Xib - тот же класс - PullRequest
1 голос
/ 19 декабря 2009

Я довольно новичок в этом, но я думаю, что то, что я ищу, имеет смысл. У меня есть XIB, который отображается в портретной, и тот, который отображается в альбомной. Обе точки зрения похожи, но имеют несколько различий. Некоторые кнопки, надписи и текстовые поля одинаковы.

Я могу показать одно и спрятать другое при изменении ориентации - это не проблема.

По сути, я ищу одно место, где я мог бы обрабатывать все обычные ответы нажатия кнопок или изменения текста. Когда пользователь находится в портретном режиме и вводит текст или выбирает кнопку, он переключается в ландшафтный режим, и соответствующие кнопки и текст обновляются.

Я попытался добавить NSObject в конструктор интерфейса и назначить его новому классу, который имеет выходы и действия для кнопок и текстовых полей, но при взаимодействии с кнопкой я получаю ошибку «нераспознанный селектор отправлен в экземпляр» в xcode.

Любая помощь будет отличной.

Лучший, Уорд

Ответы [ 2 ]

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

Объекты, которые вы добавляете в Интерфейсном Разработчике, создаются при загрузке XIB, вы не можете иметь один и тот же объект в нескольких XIB.

Для подключения нескольких XIB вы используете объект «Владелец файла», который вы видите в каждой XIB. Когда вы загружаете XIB, используя [NSBundle loadNibNamed:@"myXIB" owner:self], то, что вы передаете как объект-владелец, заканчивается как Владелец файла в загруженном XIB, и Какао соединит IBOutlets и IBActions, которые у вас есть (убедитесь, что вы установили правильный класс Объект-владелец файла в Интерфейсном Разработчике).

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

1 голос
/ 19 декабря 2009

Не забывайте, что xibs не являются шаблонами - они являются высушенными объектами Кнопка в одной не связана с кнопкой в ​​другой.

...