-1

我正在尝试将参数传递给包含中的视图控制器:

let childVC = ChildViewController()
addChild(childVC)
childVC.view.frame = frame
view.addSubview(childVC.view)
childVC.didMove(toParent: self)

ChildViewController有多个属性,其中一个必须从父视图控制器传递。

我已经尝试了一些东西,但没有一个奏效:

let childVC = ChildViewController(someProperty: someProperty)

或者

let childVC = ChildViewController()
childVC.someProperty = someProperty
4

1 回答 1

0

这一行:

let childVC = ChildViewController()

几乎总是错的。ChildViewController这将创建一个没有视图、出口或操作设置的空实例。

通常,您希望从 Storboard 或 nibfile 实例化视图控制器。

如果您问如何在子视图控制器的视图中安装内容,答案是“不要那样做”。

如果你希望你的父视图控制器有一个子视图控制器,最简单的方法是在 IB 中的父视图控制器上放置一个容器视图。然后从该容器视图控制拖动到您想成为一个孩子的视图控制器,并在出现提示时,选择“嵌入segue”作为您要创建的链接类型。

这将导致系统在容器视图中安装子视图控制器并连接所有管道以使其工作

父视图控制器的prepare(for:sender:)方法将在子视图控制器被实例化之后,但在它的视图被加载之前被调用。您可以在prepare(for:sender:)方法中放入代码以将值传递给子视图控制器(不直接设置它的视图,而是设置属性或调用方法)

于 2020-08-31T20:03:51.090 回答