从容器视图

时间:2017-03-10 12:25:42

标签: ios swift

我有一个容器视图,它根据用户操作在里面执行几个segue。我还有一个顶级UIView,我想从容器视图segue中控制并设置它的状态。

我尝试使用协议设置代理到家庭控制器,还有以下方法:

 if let parent = self.parent as? HomeController { 
        parent.handleTopBarState(state: .web)
 }

我想要发生的是当我在特定视图控制器上时,设置父视图控制器的顶部视图状态。

感谢。

2 个答案:

答案 0 :(得分:2)

如果您在另一个视图控制器上嵌入了视图控制器,则可以通过多种方式向其父级视图控制器发送消息。

  1. 在子(嵌入式)视图控制器中,您可以引用父级。为故事板中的嵌入segue提供标识符,使用child中父类的类型声明var,并在prepare(for segue: UIStoryboardSegue, sender: Any?)函数上分配父项,并调用父项的任何公共方法。
  2. 创建协议,让父级确认协议,在子级中创建协议的var,在prepare(for segue: UIStoryboardSegue, sender: Any?)中将父级设置为子级的协议对象,并随时调用协议方法。
  3. 只需向孩子发送NotificationCenter的通知,并观察父母的通知。 NotificationCenter的{​​{3}},Documentation您可以找到使用它的简短示例。
  4. 希望这有帮助!

    PS:你也可以在父vc中观察孩子的属性,如果你想这样,我可以解释一下。

答案 1 :(得分:0)

如果添加了子视图控制器,则可以使用self.parent进行简单访问。确保放进并放出

if let parent = self.parent as? ParentViewController {
        parent.resetItemsCollectionView()
    }