Ios 带有UIPageViewController的SetViewController不工作
我正在制作一个应用程序,使用UIPageViewController在页面之间导航。一切正常,但当我试图手动更改使用SetViewController显示的视图控制器时,它不会显示 我知道它正在创建视图控制器,因为它会打印到日志中,但屏幕上显示的控制器没有更改。我为uiviewcontroller的子类使用的索引使每个视图控制器都设置正确 在按下视图控制器时调用该函数 以下是更改控制器的代码:Ios 带有UIPageViewController的SetViewController不工作,ios,swift,uipageviewcontroller,Ios,Swift,Uipageviewcontroller,我正在制作一个应用程序,使用UIPageViewController在页面之间导航。一切正常,但当我试图手动更改使用SetViewController显示的视图控制器时,它不会显示 我知道它正在创建视图控制器,因为它会打印到日志中,但屏幕上显示的控制器没有更改。我为uiviewcontroller的子类使用的索引使每个视图控制器都设置正确 在按下视图控制器时调用该函数 以下是更改控制器的代码: func changeVC(VC: UIViewController) { s
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)
这是表视图的didSelectRowatineXpath方法的内部 Cjay是绝对正确的 让我更详细地解释一下,以帮助您理解您所犯的错误 每次调用
PageViewController().changeVC(controller)
都会创建新的PageViewController实例,并且会对刚刚创建的新实例调用changeVC。虽然您的代码通过脚本设置ViewController的索引来实例化它,调用changeVC并设置PageViewController的ViewController everythis executes,您将不会看到这些操作在屏幕上产生任何影响,因为您更改了刚刚插入的PageViewController的ViewController,它既没有可见的有效帧(0,0,0,0),也没有加载(未添加到ViewController的视图中):)
相反,您应该在已加载的PageViewController上执行完全相同的操作:)
根据您的评论,您正在从storyboard加载PageViewController为它创建一个IBOutlet(让我们将其称为myPageViewController:)因此,当您要更改它的ViewController时,只需说
let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("contentView") as! ViewController
controller.index = row
self.myPageViewController.changeVC(controller)
希望这有帮助:)您什么时候调用此函数的?你能显示它的代码吗?@ale_stro我添加了代码。让你用来调用changeVC的页面控制器成为一个实例变量,而不是在函数中创建和调用它,我看不出你在哪里显示页面视图控制器页面视图控制器设置为最初在故事板中显示我不知道了解我应该如何创建插座,因为我无法将PageViewController链接到我的其他viewController。有什么问题吗,伙计????你没有把PageViewController拖到情节提要中的视图控制器上吗????如何将您的PageViewController添加到您的ViewController???您可以将实例添加到appdelete中的完美解决方案