Отображение одного и того же экземпляра UIView в разных UIViewControllers - PullRequest
0 голосов
/ 12 августа 2011

Можно ли каким-то образом сохранить экземпляр UIView таким образом, чтобы к нему можно было получить доступ из других контроллеров представления?Я знаю, что это, вероятно, граничит с "глобалами", которые, как они говорят, плохие, но я отвлексяВсе, что я знаю, это то, что у меня есть пара вкладок UITabBar, которые должны ссылаться на один и тот же экземпляр представления, который был создан на одной вкладке и должен снова отображаться на другой вкладке.Каков наилучший способ сделать что-то подобное?

Ответы [ 3 ]

1 голос
/ 12 августа 2011

Вы можете просто использовать внедрение зависимостей, чтобы внедрить один и тот же экземпляр представления в контроллеры представления следующим образом:

UIView *myView = [UIView new];
UIViewController *controller1 = [UIViewController new];
UIViewController *controller2 = [UIViewController new];
controller1.view = myView;
controller2.view = myView;
[myView release];
1 голос
/ 12 августа 2011

Конечно.Вам просто нужно сохранить сохраненную ссылку на объект UIView в постоянном объекте.Например, вы можете добавить сохраненное свойство в ваш подкласс UIApplicationDelegate.Вы можете иметь этот делегат для создания экземпляра представления, и все контроллеры просто запросят у представителя приложения представление.Если у вас есть контроллер корневого представления, который всегда доступен, вы можете сохранить его там.

Возможно, продумывание общей структуры вашего приложения поможет найти «правильное» место для хранения UIView.Ниже я представляю структуру приложения, которую я часто использую, не обязательно в качестве совета о том, как вы должны структурировать свое приложение, но в качестве примера для расширения возможностей, которые вы можете рассмотреть, чтобы помочь вам подумать о лучшей структуре для вашего приложения.1007 * Я пишу много брошюр, как приложения для наших клиентов.В этих приложениях мне нужно представить несколько просмотров, каждое из которых несколько аналогично страницам в брошюре.Некоторые из этих представлений будут взаимодействовать с пользователем и должны сохранять свое состояние за пределами экрана или обмениваться данными о состоянии с другими представлениями.

Для управления этими приложениями я создаю объект диспетчера презентаций.Этот объект будет сохранять общее состояние приложения, включая представления, которые должны сохраняться, когда они не отображаются.Я использую один главный UIViewController, который владеет менеджером презентаций и отвечает за все общие операции управления просмотром.Конкретная логика для отдельных представлений будет идти в подклассах UIView для каждого представления.Эти отдельные представления создаются менеджером презентаций и могут запрашивать у этого менеджера то, что он знает, включая любые постоянные представления.

0 голосов
/ 12 августа 2011

B / c вы используете UITabBar Я бы предложил добавить ваш пользовательский вид в окно делегата приложения.Тогда вам не нужно хранить его, просто спрятать его.Вы можете использовать NSNotificationCenter для отправки уведомлений, чтобы показать представление, или вы можете вызвать ваш appDelegate и показать представление вручную.

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