从子视图中删除观察者

时间:2016-06-12 10:31:35

标签: ios swift observers

我有一个视图,它有一个dropdownmenu作为子视图。现在,当视图被取消分配时,我收到错误。 "被解除分配,而关键价值观察者仍然在其注册"

在views类中,我正在设置观察者:

override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
    self.setNeedsDisplay()
    if keyPath == "frame" {
        // Set up DropdownMenu
        self.dropDownBackground.frame.size.height = self.dropDownMenu.frame.maxY
    }   
}

并将其添加到子视图中:

dropDownMenu.addObserver(self, forKeyPath: "frame", options: .New, context: nil)

所以为了避免我想要做的错误:

deinit {
    dropDownMenu.removeObserver(self)
}

但编译器告诉我&#34;无法调用&#39; removeObserver&#39;使用&#39; DropDownMenu&#39;&#34;

的参数列表

我做错了什么?谢谢!

1 个答案:

答案 0 :(得分:1)

拥有look at the documentation:该方法称为removeObserver(_ observer: NSObject, forKeyPath keyPath: String)。所以你需要这样做:

dropDownMenu.removeObserver(self, forKeyPath: "frame")