2016-06-02 5 views
0

Я хотел бы сохранить viewController в памяти и показать их позже в пользовательском порядке, например, вызовом vc3 и после vc6, не перезапуская их снова, они должны оставаться в том же состоянии. Я думал, что использовать navigationController, но я не хочу панель навигации, и я не знаю, что я могу вызвать viewcontroller в пользовательском порядке. Я попытался поместить viewController в глобальный массив, но когда я их вызываю, у меня есть ошибка: «Приложение пыталось представить модально активный контроллер». Что вы думаете об этом, как я могу обрабатывать свои viewControllers и показывать их, не инициализируя их снова. Я все слушаю.Swift, как имитировать navigationController, без панели навигации

Я читал, что в IOS мы должны перерабатывать представление, поэтому у меня есть вопрос. Каков наилучший способ обработки просмотра. Если я хочу, чтобы мой пользователь пользовался одним и тем же представлением без инициализации диспетчера представлений, отвечающего этому представлению. как я должен это сделать, что является лучшим структурным выбором для принятия. Имейте большой просмотр viewcontroller и handle с addubview removeesubview ... или многими viewcontroller для каждого типа представления, и здесь я не знаю, как перерабатывать и хранить трассировка моего диспетчера view (я не хочу использовать контроллер навигации).

ответ

0

Прежде всего, вы можете скрыть панель навигации в навигационном контроллере:

  • self.navigationBarHidden = true (для UINavigationController)

  • self.navigationController?.navigationBarHidden = false (для UIViewController внутри UINavigationController)

Кроме того, это ОКЕЙ в вашей ситуации для хранения в глобальном массиве (но для этого лучше иметь вспомогательный класс), поэтому в то время как ваш UIViewControllers будет в памяти - вы можете повторно использовать их.

У вас проблема с навигацией (хороший ответ здесь - https://stackoverflow.com/a/7534019/1830598). Таким образом, вам нужно управлять этим заказом, убрав и снова представив UINavigationController или найдя другое решение.

Пример вашего USECASE:

  1. Present UINavigationController с любым ViewController
  2. магазин любой контроллер представления, как storedViewController
  3. В rootViewController из UINavigationController (который представлен) добавить код: self.navigationController?.viewControllers = [storedViewController, self]
  4. Теперь вы будет на втором контроллере просмотра на UINavigationController, и, нажимая назад, вы доберетесь до своего storedViewController
+0

thank, in navigationController, можно ли вызвать viewcontroller в пользовательском порядке? Я прочитал сообщение, которое вы предложили, но не нашел способ помочь. Когда я использую presentViewController для VC3, что это касается VC2, было ли это убито? или он остается в памяти. вы говорили мне о классе помощников, вы думаете о классе navigationController? – user2718075

+0

@ user2718075 вы можете установить порядок контроллеров вида в контроллере навигации в коде с его собственностью, поэтому что-то вроде 'navigationController ?.viewControllers = [VC2, VC1]' –

+0

@ user2718075 добавлен пример образца usecase –

Смежные вопросы