2016-12-09 6 views
1

Я строю приложение Swift 3 со следующими раскадровку:AlertViewController в UIPageViewController

enter image description here

Слева (зеленый цвет) является UIPageViewController, который держит 2 NavigationController как 2 страницы. Это позволяет пользователю прокручивать между двумя частями приложения.

Проблема заключается в следующем. Я пытаюсь показать предупреждение в черном UIViewController.

Вот код, чтобы отобразить предупреждение:

override func viewDidAppear(_ animated: Bool) {   
    let alert = UIAlertController(title: "Hello", message: "World", preferredStyle: UIAlertControllerStyle.alert) 
    alert.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.cancel, handler: { action in 
     alert.dismiss(animated: true, completion: nil) 
    })) 
    self.present(alert, animated: true, completion: nil) 
} 

Это работает, но я всегда получаю ниже предупреждение:

Presenting view controllers on detached view controllers is discouraged

Я также попытался с DispatchQueue.main.async представить вид, но Я столкнулся с тем же предупреждением.

Однако я обнаружил, что если бы я установил контрольный контроллер (нижний) в качестве контроллера начального представления, он работает без предупреждения.

Итак, с помощью UIPageViewController означает, что страницы будут отстранены?

Что мне здесь не хватает? Я забыл связать вещи?

ответ

1

Вы можете попробовать следующее.

[self.view.window.rootViewController presentViewController:alert animated:YES completion:nil]; 

Когда вы закончите, вы можете отменить его.

[self dismissViewControllerAnimated:YES completion:nil]; 

Сообщите мне, если это работает.

+0

Хорошо, это сработало. Итак, я не могу представить представления из контроллеров внутри страниц? Я вынужден каждый раз использовать 'rootViewController'? – VPusher