1

我有两个视图,一个是主视图,另一个是容器视图。我想做的是向孩子发送一个变量并让它执行我的功能。如何从父视图告诉子视图这两件事?

我遇到的一些问题是, ViewDidLoad 在容器视图中不起作用。当我试图对信息进行分割时,它还说已经实现了一个 periotical 编程或容器,向我表明容器不能被分割。

我要做的是有两个表,第一个表有一个列表,第二个表会根据您在第一个表中选择的内容而变化。所以我决定使用一个大部分工作的容器视图来分隔这两个表。

4

2 回答 2

1

首先,您应该注意,您创建的任何容器都可以通过childViewControllers主控制器上的属性获得。这为您提供了主控制器和子控制器之间的链接。

现在您要做的是在父表发生更改时更改子表中的某些内容。有很多方法可以做到这一点,但在这种情况下,有一个非常简单的技术:您总是知道父表格单元格选择何时更改,在didSelectRowAtIndexPath. 因此,您需要做的只是在 内didSelectRowAtIndexPath,当行更改时,您调用子控制器中的一个方法,该方法传入有关您要使用的当前选定行的任何信息。该方法将更改表格并在子视图中执行您想做的任何其他事情,因为它是子控制器的一部分。

使用委托或 KVO 或任何其他技术都是矫枉过正的,并且必然会使代码的可读性大大降低。

于 2015-04-10T18:38:46.973 回答
0

您可以使用委托来执行此操作。委托只是您可以实现以将数据传递到另一个视图的协议:

protocol nameOfProtocol {
    func someFunc
}

您可以轻松地搜索教程或示例,这样您就可以更好地对其进行可视化,而不仅仅是在这里查看一些代码。

如果你想viewDidLoad工作,你可以在故事板中创建一个视图,给它一个标识符名称(并将其设置为正确的视图控制器),你可以像这样声明它:

let viewController = storyboard?.instantiateViewControllerWithIdentifier("viewControllerName") as! ViewControllerName
于 2015-04-10T17:52:37.137 回答