我正在嘗試爲文檔創建一個詳細視圖。詳細視圖的頂部是一個90像素高的卡式佈局,下面是兩個控制器之間切換的視圖傳呼機:InfoViewController(顯示一些元信息)和DocumentViewController(顯示pdf)。當調用viewDidLoad時UIPageViewController:出口未初始化
我已經在具有兩個UIViews的xib文件中放置了頂層控制器(DetailViewController):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
}
}
您是否在UIPageViewController上調用了setViewControllers:...方法,它是否會使應用程序崩潰。 – Sandeep
謝謝!我已經添加了這一行: pageViewController.setViewControllers([infoVC],方向:UIPageViewControllerNavigationDirection.Forward,動畫:false,完成:無) 但現在我有一個不同的問題:InfoViewController和DocumentViewController在尋呼機中)在其viewDidLoad方法被調用時未被初始化。 –
那麼,它現在工作嗎? – Sandeep