繁体   English   中英

从子视图中删除观察者

[英]Remove observer from subview

我有一个具有下拉菜单作为子视图的视图。 现在,当视图被释放时,我得到一个错误。 “在关键值观察者仍向其注册的同时被释放”

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

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)
}

但是编译器告诉我“无法使用参数列表'DropDownMenu'调用'removeObserver'”

我究竟做错了什么? 谢谢!

看一下文档 :该方法称为removeObserver(_ observer: NSObject, forKeyPath keyPath: String) 因此,您需要执行以下操作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM