将数据从嵌入式PageViewController传递到父View Controller

时间:2017-10-19 15:42:01

标签: ios swift uitableview uipageviewcontroller

我正在开发一个包含“代表查找器”的应用程序,该应用程序允许某人在UITextField中输入他们的地址,或从PickerView中选择状态以查看他们的政府代表。我有一个主ViewController,它将在用户提交上述选项之一后显示结果。在此之上,我已经强加了一个ContainerView,我已经嵌入了一个有两个页面的PageViewController;一个包含UITextField和按钮按地址搜索,另一个包括PickerView和按州搜索的按钮。 PageView当前通过嵌入式转换连接到TableView,但是,当我尝试在PageViewController中引用父表视图控制器时,它表示PVC没有父级,即使ViewController将PageViewController标识为其子级。我的问题是:将变量从子PageViewController传递到其容器的正确方法是什么?

编辑:我尝试了以下内容,但它不起作用:

在我的PageViewController中:

protocol SearchFinderDelegate: class
{
    func getResults(results: String)
}

class LawSearchWindow: UIPageViewController
{
     weak var newDelegate: SearchFinderDelegate?

  viewDidLoad()
   {

       /*Attempt to initialize newDelegate*/
       newDelegate=self
       newDelegate?.getResults(results: “test123”)
  }}

在我的主要VC课程中,我有:

func getResults(results: String)
{
    print(results)
}

更新:当我尝试制作'newDelegate = self'声明时,它告诉我'无法指定'VC name'类型的值来键入'委托名称'

1 个答案:

答案 0 :(得分:2)

正确的方法是创建一个委托协议并让父顺从它(孩子然后将其作为弱属性引用)或者将完成处理程序回调块传递给子进程并让子进程调用那。通常,您不希望直接引用其子女的父母。