Я не совсем уверен, что лучше всего это делать, поэтому я подумал, что спросить.
Вот цель программы:
- Пользовательский контроллер навигации, созданный с помощьюroot UIViewController, который фактически не подкласс UINavigationController (для простоты манипулирования дизайном)
- Вложенные контроллеры представления для разных экранов (управляются контроллером основного представления)
- Каждый вложенный контроллер представления имеет собственный файл пера
В настоящее время у меня это работает, однако каждый вложенный контроллер представления - это не контроллер представления, а подкласс UIView.Я чувствую, что это плохая практика, потому что я использую эти UIViews способом контроллера представления, но без функций контроллера представления (то есть. ViewDidLoad).Кроме того, эти UIViews принимают обычные методы делегата UIViewController (который действительно устанавливает красные флаги).
Это на самом деле плохая практика?
Вещи, которые я боюсь при попытке переключитьUIViewControllers - это то, что мне все равно придется создать подкласс UIView, чтобы определить, на какое представление указывать, когда я загружаю перо через:
NSArray *bundle = [[NSBundle mainBundle] loadNibNamed:nibName owner:self options:nil];
for (id object in bundle) {
if ([object isKindOfClass:[SubclassedUIView class]])
currentScreenViewController = (SubclassedUIView *)object;
}
Я еще не проверял, но я предполагаю, что долженсделать "SubclassedUIView", а не просто UIView в этом операторе, потому что в комплекте есть другие объекты UIView.Но опять же, эта ситуация может быть лучше, чем текущая.
Другое решение может заключаться в том, чтобы сделать MainViewController делегатом для всех UIViews, для которых требуется делегат, и создать категории MainViewController, содержащие методы делегата.для каждого вложенного пера.
Есть идеи?