фонИспользование нескольких файлов nib с одним контроллером представления?
Я использую Interface Builder для создания пользовательского интерфейса для приложения, я работаю. Приложение имеет один экран, который отображает ряд кнопок. Нажатие на кнопку отображает соответствующий вид, который накладывает кнопки. Нажатие на другую кнопку скрывает предыдущий вид наложения и отображает другую.
Слишком упростить управление интерфейсом в IB. Я решил создать несколько файлов nib для каждого дополнительного представления, которое должно появиться при нажатии соответствующей кнопки. Затем я загружаю файл nib sub view в режиме viewDidLoad
контроллера вида, используя класс UINib
.
Идея этого заключалась в том, чтобы избежать того, чтобы несколько представлений располагались друг над другом в одном файле, так как это было бы трудно манипулировать в IB. Я мог бы создать все представления в коде, но для этого потребовалось бы много утомительного кодирования, поскольку макеты каждого подвидного представления довольно сложны (с несколькими дочерними представлениями).
Пример кода, загружающий дополнительный вид из файла nib.
- (void)viewDidLoad
{
UINib *aSubViewNib = [UINib nibWithNibName:@"aSubView" bundle:nil];
NSArray *bundleObjects = [aSubViewNib instantiateWithOwner:self options:nil];
// get root view from bundle array
UIView *aSubView = [bundleObjects objectAtIndex:0];
[self.view addSubview:aSubView];
...
Указанный выше код повторяется для других видов.
Чтобы подвести итог, у меня есть приложение для iPhone с одним экраном, которое имеет многоуровневые виды, которые отображаются/скрыты при нажатии кнопок. Это достигается с помощью одного контроллера представления с ассоциированным файлом nib и рядом дополнительных файлов nib для подзадач, которые загружаются в методе viewDidLoad контроллера вида.
Вопросы!
Извините за подробное введение, но я хотел быть предельно ясным, что я делаю.
- Является ли мой подход плохим или необычным?
- Есть ли какие-либо потенциальные проблемы для этого?
- Что делают другие люди, когда им нужен динамический интерфейс, и все еще хотят сохранить все в интерфейсе Builder?
Примечания
Прежде чем кто спрашивает, почему я не могу просто показать мнения суб на новом экране и использовать панель навигации, позвольте мне сказать, что у меня есть очень веские причины, и я понимаю, IOS UI. Вышеприведенный пример использования - это не совсем мой вариант использования, но он четко описывает проблему, не увязнув в моем приложении для разработки.
Кроме того, я знаю, что мог бы написать все подменю в виде кода, но каждый под просмотр имеет сложный макет детских представлений, и было бы много кода и возиться, чтобы попытаться заставить их выглядеть правильно.
Заранее спасибо.
Итак, для моего случая использования, когда единственная причина, по которой я разделял взгляды на отдельные файлы nib, заключалась в том, чтобы упростить управление этими представлениями в IB, считаете ли вы, что мой подход безопасен в использовании или он нарушает рекомендации Apple? – Camsoft
Нет правил или рекомендаций относительно того, что вы делаете. Ты в порядке. – Jim
Я добавил пример реального программного компонента, который используют многие разработчики. См. Мой ответ выше для более подробной информации. – Jim