2016-08-26 4 views
1

Предпосылки (Swift):«развернутая» с любого контроллера представления обратно к исходному контроллеру вид раскадровке в

  1. У меня есть приложение с большим количеством контроллеров отображения на одной раскадровке.
  2. Существует контроллер навигации, но первые несколько контроллеров просмотра в нем отсутствуют. (Я указываю это на b/c. Я не могу просто «выскочить на корню» здесь.)
  3. Событие с истечением сеанса, которое запускается через x минут.

использование:

Независимо от того, какого экрана пользователь находится, если я вижу «сессия истекла» уведомление, я хочу, чтобы отправить пользователь вернуться к исходному контроллеру представления моей раскадровки в.

Мой вопрос:

Как именно я могу добиться этого без создания разматывания SEGUE вручную на каждом отдельном контроллере представления? Есть ли способ «выбросить» текущий экземпляр раскадровки и начать сначала?

(я не беспокоюсь о запоминании их текущее состояние, а что нет ... это не имеет значения для этого сценария. Он истек, они теряют, они начинают снова.)

ответ

1

Вы можете «захватить» соответствующую ViewController от своего видеоряда идентификатора - как сказал Паван Araballi в своем ответе - и установить window.rootViewController Недвижимость на AppDelegate. Я думаю, что этот подход лучше, чем представление viewController поверх пользовательского интерфейса, который у вас уже есть.

1

Лучшее решение для этого было бы перейти к viewcontroller с помощью идентификатора раскадровки.

нажмите на main.storyboard и нажмите на viewcontroller. На инспекторе идентификации включите раскадровку Используйте Раскадровка ID и укажите идентификатор.

let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
let vc : UINavigationController = storyboard.instantiateViewControllerWithIdentifier("mainNavigationStoryBoard") as! UINavigationController 
self.presentViewController(vc, animated: true, completion: nil) 

Просто используйте код выше, чтобы перейти к конкретному ViewController после sesssion истек

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