【发布时间】:2017-05-04 14:43:57
【问题描述】:
我想将数据从UIPageViewController 传递给它的一个子ViewControllers。
我有一个这样的协议集:
protocol Delegate : class{
func protocolMethod(count:Int)
}
在UIPageViewController:
class PageVC : UIPageViewController{
var delegate : Delegate?
var count : Int = 1
func classMethod(){
self.displayPageForIndex(5) //this controlls the tranistion to the child ViewController
self.delegate?.protocolMethod(count : self.count)
}
}
在顺从的孩子ViewController:
class ChildVC : UIViewController , Delegate{
func protocolMethod(count : Int){
print(count)
}
override func viewDidLoad() {
super.viewDidLoad()
let pvc = PageVC()
pvc.delegate = self
}
}
我在viewDidLoad 中所做的是我尝试过的最简单的解决方案,但仍然找不到关于如何让PageViewController 知道孩子ViewController 是接收者的答案协议方法。
如果有人可以在不使用 prepareForSegue 的情况下帮助我实现这一点(因为没有 segues),那将不胜感激。
【问题讨论】:
-
您的
ChildVC和PageVC在哪里实例化?另外,我建议您为您的代表指定一个名称,以指定它的作用或用途。 -
我有一个函数可以实例化子 VC,然后我将它们添加到数组中。 PageVC 本身没有被实例化(好吧,PageViewController 的功能可以完美地工作,所以它的实例化方式可能与子 vcs 不同)。这里的名字只是占位符让我了解应该做什么,我在我的真实代码中使用特定的名字@toddg
-
"PageVC 本身没有被实例化" 显然,关于什么是类和实例,以及如何在 iOS / Cocoa 编程中创建实例,这里存在知识空白。没有什么比这更基本的了:除非了解对象,否则无法进行面向对象编程。
标签: ios swift delegates protocols uipageviewcontroller