ios - 带有 uiPageViewControllers 的 SetViewControllers 不工作

标签 ios swift uipageviewcontroller

我正在制作一个使用 UIPageViewController 在页面之间导航的应用程序。一切正常,除了当我尝试手动更改使用 setViewControllers 显示的 View Controller 时,它不显示。

我知道它正在创建 View Controller ,因为它会打印到日志中,但屏幕上显示的 Controller 并没有改变。我为 uiviewcontroller 的子类使用的索引也正确设置了每个 View Controller 。

该函数在按下 View Controller 时被调用。

这是应该更改 Controller 的代码:

    func changeVC(VC: UIViewController) {
        setViewControllers([VC], direction: .Forward, animated: true, completion: nil)
    }

函数调用:

    Let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("contentView") as! ViewController
    Controller.index = row
    PageViewController().changeVC(controller)

这是在 TableView 的 didSelectRowAtIndexPath 方法中。

最佳答案

Cjay 完全正确,

让我更详细地解释一下,以帮助您了解自己犯了什么错误。

每次您调用 PageViewController().changeVC(controller) 时,都会创建 PageViewController 的新实例,并且会在您刚刚创建的新实例上调用 changeVC。虽然你的代码从 Storyboard 中实例化一个 ViewController 设置它的索引,调用 changeVC 并设置 PageViewController 的 ViewController 一切都执行你不会看到任何这些对你的屏幕产生任何影响,因为你改变了你刚刚启动的 PageViewController 的 ViewController有一个可见的有效框架 (0,0,0,0) 也没有被加载(没有添加到您的 ViewController 的 View 中):)

相反,您应该做的是在已加载的 PageViewController 上执行完全相同的操作:)

根据您的评论,您正在从 Storyboard 中加载 PageViewController 创建一个 IBOutlet,我们可以将其称为 myPageViewController :) 所以当您想要更改它的 ViewController 时,只需说,

let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("contentView") as! ViewController
controller.index = row
self.myPageViewController.changeVC(controller)

希望这有帮助:)

关于ios - 带有 uiPageViewControllers 的 SetViewControllers 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37634465/

相关文章:

ios - 如何在 Swift 中正确推进 PageViewController

iphone - 类型转换花车和 UILabel

ios - 使用 AVFoundation 在 UIView 中显示相机源

iphone - iOS : Is there a way to kill current view controller of NavigationControl before navigating to other view controller?

ios - 乘以文本字段错误?

ios - 无法使用类型的参数列表调用 'getObjectInBackgroundWithId'

ios - 快速停止时使QR码阅读器再次启动

ios - PageViewController 页面指示器向上推 View

ios - 以编程方式翻页,指标不变

ios - 在 iOS 状态栏中显示下载进度