Фон
Я использую конструктор интерфейса для создания интерфейса приложения, над которым я работаю.Приложение имеет один экран, который отображает ряд кнопок.Нажатие на кнопку отображает связанный вид, который перекрывает кнопки.Нажатие на другую кнопку скрывает предыдущее представление наложения и отображает другое.
Слишком упрощение управления пользовательским интерфейсом в IB. Я решил создать несколько файлов пера для каждого вложенного представления, которое должно отображаться при нажатии соответствующей кнопки.Затем я загружаю nib-файл вложенного представления в метод viewDidLoad
контроллера представления, используя класс UINib
.
Идея, стоящая за этим, состояла в том, чтобы избежать наложения нескольких представлений друг на друга в одномNIB-файл, так как это было бы трудно манипулировать в IB.Я мог бы создать все представления в коде, но для этого потребовалось бы много утомительного кодирования, так как макеты каждого вложенного представления довольно сложны (с несколькими дочерними представлениями).
Пример кода загрузки вспомогательного представления из перафайл.
- (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, которое имеет многоуровневые представления, которые отображаются / скрываются при нажатии кнопок.Это достигается с помощью одного контроллера представления со связанным файлом пера и серией дополнительных файлов пера для вложенных видов, которые загружаются в метод viewDidLoad контроллера представления.
Вопросы!
Извините за длинное вступление, но я хотел очень четко понять, что я делаю.
- Мой подход плохой или необычный?
- Есть ли потенциальные проблемысделать это таким образом?
- Что сделали другие люди, когда им нужен динамический интерфейс и все еще хотят сохранить все в Интерфейсном Разработчике?
Примечания
Прежде чем кто-либо спросит, почему бы мне просто не отобразить вложенные виды на новом экране и не использовать панель навигации, позвольте мне сказать, что у меня есть очень веские причины, и я понимаю рекомендации по интерфейсу iOS.Приведенный выше вариант использования - не совсем мой вариант использования, но он четко описывает проблему, не увязая в моем приложении для разработки.
Также я знаю, что мог бы написать все вспомогательные представления в виде кода, но каждое вспомогательное представлениеимеет сложную структуру дочерних представлений, и было бы много кода и возиться, чтобы попытаться заставить их выглядеть правильно.
Заранее спасибо.