我有一个容器视图,它根据用户操作在里面执行几个segue。我还有一个顶级UIView,我想从容器视图segue中控制并设置它的状态。
我尝试使用协议设置代理到家庭控制器,还有以下方法:
if let parent = self.parent as? HomeController {
parent.handleTopBarState(state: .web)
}
我想要发生的是当我在特定视图控制器上时,设置父视图控制器的顶部视图状态。
感谢。
答案 0 :(得分:2)
如果您在另一个视图控制器上嵌入了视图控制器,则可以通过多种方式向其父级视图控制器发送消息。
var
,并在prepare(for segue: UIStoryboardSegue, sender: Any?)
函数上分配父项,并调用父项的任何公共方法。prepare(for segue: UIStoryboardSegue, sender: Any?)
中将父级设置为子级的协议对象,并随时调用协议方法。NotificationCenter
的通知,并观察父母的通知。 NotificationCenter
的{{3}},Documentation您可以找到使用它的简短示例。希望这有帮助!
PS:你也可以在父vc中观察孩子的属性,如果你想这样,我可以解释一下。
答案 1 :(得分:0)
如果添加了子视图控制器,则可以使用self.parent进行简单访问。确保放进并放出
if let parent = self.parent as? ParentViewController {
parent.resetItemsCollectionView()
}