Изменение значения UIViewControllers self.navigationController? - PullRequest
0 голосов
/ 13 июня 2010

Я создаю пользовательский 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, чтобы я смог справиться с этим самостоятельно.

Спасибо за любую помощь / совет, данный:)

1 Ответ

0 голосов
/ 04 февраля 2011

Я не знаю, поняли ли вы это, но я думаю, я решаю ту же проблему. Например. стандартное приложение iPad с разделенным видом имеет RootViewController (для всплывающего окна) и DetailViewController, который имеет представление под всплывающим окном или представление справа, когда iPad наклонен (горизонтальный). Я хочу выбрать из всплывающего окна и управлять отдельными контроллерами, которые заполняют подробный вид на основе выбора RootViewController. Я еще не понял это. Если у вас есть понимание, пожалуйста, напишите. Я сделаю то же самое, если столкнусь здесь с какими-нибудь великолепными дизайнами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...