Я пытаюсь создать подробное представление документов. Верхняя часть подробного представления - это макет карты высотой 90 пикселей, а ниже - просмотр пейджера между двумя контроллерами: InfoViewController (показать некоторую метаинформацию) и DocumentViewController (show pdf).UIPageViewController: выходы не инициализируются при вызове viewDidLoad
Я выложил контроллер верхнего уровня (DetailViewController) в файле xib с двумя UIViews: viewForCard и viewForPager. Однако выходы, определенные в InfoViewController и DocumentViewController, еще не инициализируются при вызове метода viewDidLoad. Кто-нибудь может понять, почему?
Основной код в DetailViewController (ограничения на просмотры контейнеров viewForCard и viewForPager были установлены в файле XIb:
@IBOutlet weak var viewForCard: UIView!
@IBOutlet weak var viewForPager: UIView!
var pageViewController:UIPageViewController = UIPageViewController()
var infoVC:InfoViewController = InfoViewController()
var documentVC:DocumentViewController = DocumentViewController()
override func viewDidLoad() {
super.viewDidLoad()
pageViewController.delegate = self
pageViewController.dataSource = self
addChildViewController(pageViewController)
pageViewController.setViewControllers([infoVC], direction: UIPageViewControllerNavigationDirection.Forward, animated: false, completion: nil)
initLayout()
}
func initLayout(){
var cardView:UIView = Card(document: document).contentView
cardView.setTranslatesAutoresizingMaskIntoConstraints(false)
var pagerView = pageViewController.view
pagerView.setTranslatesAutoresizingMaskIntoConstraints(false)
viewForCard.addSubview(cardView)
viewForPager.addSubview(pagerView)
let bindings = ["card": cardView, "pager": pagerView]
viewForCard.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-0.0-[card]-0.0-|", options: nil, metrics: nil, views: bindings))
viewForCard.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("|-0.0-[card]-0.0-|", options: nil, metrics: nil, views: bindings))
viewForPager.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-0.0-[pager]-0.0-|", options: nil, metrics: nil, views: bindings))
viewForPager.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("|-0.0-[pager]-0.0-|", options: nil, metrics: nil, views: bindings))
}
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController?{
if viewController == documentVC{
return infoVC
}else{
return nil
}
}
func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController?{
if viewController == infoVC{
return documentVC
}else{
return nil
}
}
Вы вызвали метод setViewControllers: ... в UIPageViewController, не приведет к сбою приложения. – Sandeep
Спасибо! Я добавил эту строку: pageViewController.setViewControllers ([infoVC], направление: UIPageViewControllerNavigationDirection.Forward, анимированный: false, завершение: nil) Но теперь у меня другая проблема: выходы, определенные в InfoViewController и DocumentViewController (те, в пейджере) не инициализируются при вызове метода viewDidLoad. –
Итак, он работает сейчас? – Sandeep