gpt4 book ai didi

ios - 带有 uiPageViewControllers 的 SetViewControllers 不工作

转载 作者:可可西里 更新时间:2023-11-01 02:16:43 25 4
gpt4 key购买 nike

我正在制作一个使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com