Я создаю пользовательский UINavigationController (не подклассифицируя его, я подкласс UIViewController для этого), я хотел бы иметь экземпляры UIViewController, которые добавляются в мой пользовательский навигационный контроллер, чтобы получить ссылку на пользовательский контроллер навигации, когда они получаютself.navigationController.Т.е.
Вы бы из UIViewController, принадлежащего UINavigationController, сделали это, чтобы поместить новый контроллер представления в стек:
MyViewController *myVC = [[MyViewController alloc] init];
[self.navigationController pushViewController:myVC animated:YES];
[myVC release];
Я хотел бы подражать этому поведению.Предпочтительно с помощью шаблона проектирования, который не включает добавление кода в сам UIViewController.Таким образом, в вышеприведенном случае, когда пользовательский контроллер навигации получает контроллер, помещенный в него, он в методе pushViewController установит navigationController на собственный контроллер (сам), так что, когда вновь добавленный контроллер представления делает себя сам.navigationController также получит ссылку на пользовательский nav-контроллер.
Здесь задействовано несколько ошибок.Даже если добавленный viewController отображается пользовательским навигационным контроллером, [self parentViewController]
не работает при создании подкласса UIViewController
.Если бы это было так, я мог бы просто пойти
[[self parentViewController] pushViewController...
изнутри моего добавленного UIViewController
.
self.navigationController
только для чтения, поэтому я не могу установить еговручную, и даже если бы я мог, мне пришлось бы установить его на [self parentViewController]
, к которому я не могу добраться.
Я планировал создать категорию на UIViewController (мой проект будет использовать только пользовательский navigationController)так что нет никаких шансов столкновения вещей).Но его подход сталкивается с проблемой, упомянутой выше, у меня нет способа получить ссылку на Custom UINavigationController, владеющий push-UIViewController, из этих добавленных контроллеров.Я должен был бы построить протоколы и установить CustomNavigationController в качестве делегата для каждого из UIViewControllers, таким образом связывая его довольно сильно и заставляя эти UIViewController функционировать только с моим пользовательским Nav-контроллером.
Надеюсь, понятно, что яЯ пытаюсь достичь этого, мне нужно больше опыта проектирования шаблонов в Objective C, чтобы я смог справиться с этим самостоятельно.
Спасибо за любую помощь / совет, данный:)