Способ повторного использования
Один из способов повторного использования .xib заключается в создании нового контроллера представления с передачей ему файла DrinkDetailViewController. xib при инициализации. Однако такое решение создает ряд проблем. Вспомните, что Interface Builder используется не только для определения интерфейса, но еще и для связывания компонентов с классом, загружающим .xib. и информацию о Владельце файла.
Файл .xib не содержит непосредственную информацию о классе контроллера представления, с которым он связывается. Связывание осуществляется косвенно — через объект владельца файла (Files Owner). Когда вы передаете .xib контроллеру представления, он десериализует его содержимое и создает связи по ссылкам, хранящимся с .xib. Следовательно, если мы захотим передать файл .xib другому, новому контроллеру представления, нам придется проследить за тем, чтобы он содержал те же ссылки с теми же именами, те же действия и т. д.
Повторное использование .xib подходит для нашего конкретного приложения, но не является универсальным решением.
Особенности архитектуры DrinkMixer позволяют нам субклассировать детализированное представление для решения задачи. Такое решение отлично подходит для нашего приложения, однако будьте осторожны с его применением в более сложных приложениях — оно усложняет сопровождение кода. Нередко оказывается проще построить новое представление. а иногда при этом выясняется, что два представления даже выглядят по-разному.
Контроллеры представлений можно субклассировать и расширять, как и любые другие классы.
Вместо повторного использования .xib с необходимостью создания всех IBOutlet/IBAction можно субклассировать DetailedViewController и добавить необходимое поведение. Класс AddDrinkViewController почти не отличается от DetailedViewController, кроме возможности создания и сохранения новых рецептов. Все остальное — отображение названия, описания и т. д. — реализовано точно так же, как в DetailedViewController.
Сначала необходимо создать новый контроллер представления.
Я так и не понял, как это возможно: новый контроллер представления без нового .xib?
- Дата: 18-12-2014, 11:09