【问题标题】:UIPageViewController: how to add a non-paging toolbar or other "overlay" elements?UIPageViewController:如何添加非分页工具栏或其他“覆盖”元素?
【发布时间】:2012-04-26 15:19:33
【问题描述】:

我已经实现了一个 PDF 查看器。目前它是一个UIViewController,其中包含一个UIPageViewController。 我的工具栏、一些覆盖元素(例如快速访问 PDF 的某些页面)被添加到标准的UIViewController's 视图中。 但是我想知道这是否需要?是否有可能从UIPageViewController继承并具有子控制器的分页效果,并且顶部仍然有“浮动”元素不会被分页? 还是要采取收容措施?

【问题讨论】:

    标签: ios cocoa-touch uikit uipageviewcontroller


    【解决方案1】:

    我们应该以编程方式创建UIPageViewController,并将其视图作为子视图添加到另一个UIViewController 的视图中。而我们希望它们“覆盖”的元素应该是主机UIViewController 的子视图。

    例如在- viewDidLoad:

    UIPageViewController *pvc = // init this on your own way
    pvc.dataSource = // your data source
    
    // Set page view controller's view's frame to match host view's frame
    pvc.view.frame = self.view.bounds;
    
    // And here comes the magic
    [self.view insertSubView:pvc.view belowSubview:<any subview>];
    

    简单地说,我们只使用UIPageViewController 的视图而不是它自己。

    希望这会有所帮助。

    【讨论】:

    • 请注意,SO 更像是一个问答资源,而不是帮助论坛,因此问题是否过时或者提问者是否仍然感兴趣并不重要。为遇到相同问题并在搜索中找到该主题的其他人发布答案完全符合 SO 的使命,如果尚未发布合适的答案,我们强烈建议您这样做。
    • 这就是我所说的视图控制器包含的肮脏解决方案。您只是将一个视图控制器视图添加到另一个视图中,而不是使用正确的方法。
    • 这是一个合法的答案,可以让您添加非分页工具栏或其他“覆盖”元素。所以它提供了。因为这是被问到的。
    • @Cad 它可能会遇到与 UIController 事件相关的各种问题,例如旋转。我已经有两个控制器,它们使用 UIViewController 容器。将视图作为子视图注入与此没有什么不同,但仍然是错误的方法。
    • 视图控制器包含和“子视图”被认为是相同的,但它是一个有效的解决方案,只是尝试旋转,它可以工作。考虑任何可能的性能问题,但这只是将视图从一个更改为另一个。我想知道你为什么认为这是一种错误的做法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-17
    • 2020-09-27
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    相关资源
    最近更新 更多