jas*_*328 8 ios uipageviewcontroller swift
我有三个控制器.一个,如果HomeViewController它启动它BlahPageViewController和它的个别页面.另外两个控制器(BlahPageViewController并专门BlahItemViewController处理UIPageViewController.在我HomeViewController,我有以下代码初始化页面.
private func setPageViewController() {
let blahPageController = self.storyboard!.instantiateViewControllerWithIdentifier("BlahPageController") as! BlahPageViewController
blahPageController.dataSource = self
blahPageController.blahs = blahs
if blahs.count > 0 {
let firstController = getItemController(0)!
let startingViewControllers: NSArray = [firstController]
blahPageController.setViewControllers(startingViewControllers as [AnyObject], direction: .Forward, animated: false, completion: nil)
}
// Setting page view controller to front of app
pageViewController = blahPageController
addChildViewController(pageViewController!)
self.view.addSubview(pageViewController!.view)
pageViewController!.didMoveToParentViewController(self)
// Now lets bring that container to the front.
self.view.bringSubviewToFront(self.headerBar)
// BUT IT DOESN'T WORK!!!!
}
Run Code Online (Sandbox Code Playgroud)
我必须想象容器会走到页面的最前端.但是,当我运行应用程序时,容器内的按钮不可单击.
下面的故事板.

调试视图截图.

这有什么问题?有没有更好的方法来处理这个问题.当用户翻阅页面但容器与BlahItemViewController?重叠时,我不希望这些按钮移动.我怎样才能解决这个问题?
在您的setPageViewController()函数中,您addSubview()用于将UIPageViewController的视图添加到ViewController的视图。这会将视图置于所有其他视图之上。
基本上,您有两个选择可以避免这种情况。可以使用插入它作为第一个视图
self.view.insertSubview(pageViewController!.view, atIndex: 0)
Run Code Online (Sandbox Code Playgroud)
或特定视图下方使用
self.view.insertSubview(pageViewController!.view, belowSubview: self.headerbar)
Run Code Online (Sandbox Code Playgroud)
这应该够了吧。
还要确保为容器视图启用了用户交互。Interface Builder中有一个设置,但您也可以在代码中进行设置:
self.headerbar.userInteractionEnabled = true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2020 次 |
| 最近记录: |