微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – 将容器带到视图前方

我有三个控制器.一个如果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!!!!

}

我必须想象容器会走到页面的最前端.但是,当我运行应用程序时,容器内的按钮不可单击.

下面的故事板.

调试视图截图.

这有什么问题?有没有更好的方法来处理这个问题.当用户翻阅页面但容器与BlahItemViewController重叠时,我不希望这些按钮移动?我怎样才能解决这个问题?

解决方法

在你的setPageViewController()函数中,你正在使用addSubview()将UIPageViewController的视图添加到ViewController的视图中.这将使视图位于所有其他视图之上.

基本上你有两个选择来避免这种情况.将其作为第一个视图插入使用

self.view.insertSubview(pageViewController!.view,atIndex: 0)

或使用以下特定视图

self.view.insertSubview(pageViewController!.view,belowSubview: self.headerbar)

这应该够了吧.

更新

还要确保为容器视图启用了用户交互. Interface Builder中有一个设置,但您也可以在代码中执行此操作:

self.headerbar.userInteractionEnabled = true

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐