带有 uiPageViewControllers 的 SetViewControllers 不工作
SetViewControllers with uiPageViewControllers is not working
我正在制作一个使用 UIPageViewController 在页面之间导航的应用程序。一切正常,除了当我尝试手动更改使用 setViewControllers 显示的视图控制器时,它不显示。
我知道它正在创建视图控制器,因为它会打印到日志中,但屏幕上显示的控制器没有更改。我为 uiviewcontroller 的子类使用的索引也正确设置了每个视图控制器。
在按下视图控制器时调用该函数。
这是应该更改控制器的代码:
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)
这是在 table 视图的 didSelectRowAtIndexPath 方法中。
Cjay 完全正确,
让我更详细地解释一下,以帮助您了解自己犯了什么错误。
每次调用 PageViewController().changeVC(controller)
都会创建 PageViewController 的新实例,并且会在您刚刚创建的新实例上调用 changeVC。虽然你的代码从情节提要中实例化一个 ViewController 设置它的索引,调用 changeVC 并设置 PageViewController 的 ViewController 一切都执行你不会看到任何这些对你的屏幕产生任何影响因为您更改了您刚刚创建的 PageViewController 的 ViewController,它既没有可见的有效框架 (0,0,0,0) 也没有加载(未添加到您的 ViewController的观点):)
相反,您应该做的是在已加载的页面ViewController 上执行完全相同的操作:)
根据您的评论,您正在从情节提要中加载 PageViewController 创建一个 IBOutlet,我们可以将其称为 myPageViewController :) 所以当您想要更改 ViewController简单地说,
let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("contentView") as! ViewController
controller.index = row
self.myPageViewController.changeVC(controller)
希望这对您有所帮助:)
我正在制作一个使用 UIPageViewController 在页面之间导航的应用程序。一切正常,除了当我尝试手动更改使用 setViewControllers 显示的视图控制器时,它不显示。
我知道它正在创建视图控制器,因为它会打印到日志中,但屏幕上显示的控制器没有更改。我为 uiviewcontroller 的子类使用的索引也正确设置了每个视图控制器。
在按下视图控制器时调用该函数。
这是应该更改控制器的代码:
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)
这是在 table 视图的 didSelectRowAtIndexPath 方法中。
Cjay 完全正确,
让我更详细地解释一下,以帮助您了解自己犯了什么错误。
每次调用 PageViewController().changeVC(controller)
都会创建 PageViewController 的新实例,并且会在您刚刚创建的新实例上调用 changeVC。虽然你的代码从情节提要中实例化一个 ViewController 设置它的索引,调用 changeVC 并设置 PageViewController 的 ViewController 一切都执行你不会看到任何这些对你的屏幕产生任何影响因为您更改了您刚刚创建的 PageViewController 的 ViewController,它既没有可见的有效框架 (0,0,0,0) 也没有加载(未添加到您的 ViewController的观点):)
相反,您应该做的是在已加载的页面ViewController 上执行完全相同的操作:)
根据您的评论,您正在从情节提要中加载 PageViewController 创建一个 IBOutlet,我们可以将其称为 myPageViewController :) 所以当您想要更改 ViewController简单地说,
let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("contentView") as! ViewController
controller.index = row
self.myPageViewController.changeVC(controller)
希望这对您有所帮助:)