2016-05-15 5 views
0

У меня есть ViewController, который встроен как в панель управления планшетами, так и в контроллер навигации. Она имеет роль игры/викторины:Swift - подтверждение при изменении вида

enter image description here

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

Итак, я думаю, мой вопрос: где я должен разместить свой UIAlertController, чтобы он работал так, как описано?

+0

так 'addTarget' на эту кнопку, затем установите свой UIAlertController – Lamar

ответ

1

Вы можете реализовать делегатов как UITabBarController и UINavigationBar, UITabBarControllerDelegate и UINavigationBarDelegate соответственно.

Для UITabBarControllerDelegate реализации:

func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool { 
    // alert here, don't go back unless user confirms 
} 

Для UINavigationBarDelegate реализации:

func navigationBar(navigationBar: UINavigationBar, shouldPopItem item: UINavigationItem) -> Bool { 
    // alert here, don't go back unless user confirms 
} 

Примечание: UINavigationBar это свойство вашего UINavigationController - вы можете стать делегатом от navigationController.navigationBar.delegate = self;

+0

Привет, спасибо, это было на самом деле очень полезно. Однако я не могу это сделать. 'shouldPopItem' возвращает немедленно и даже не ждет ответа' UIAlertController'. Таким образом, я могу настроить контроллер просмотра после подтверждения пользователя, но элемент навигационной панели не открывается. Вы знаете, может быть, как это решить, @Carter? – jwitos

+0

Я не уверен, что вы подразумеваете под навигационной панелью. После того, как пользователь подтвердит, вы можете указать вашему UINavigationController попсу, который также должен обновить панель. – Carter

+0

Он правильно обновляет планку, но контроллер просмотра (ниже панели навигации) не попадает в предыдущий вид в стеке навигации, даже если я пытаюсь запустить метод self.popViewControllerAnimated. – jwitos

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