2016-06-12 9 views
0

サブビューとしてドロップダウンメニューを持つビューがあります。ビューが割り当て解除されると、今、私はエラーが発生しています。サブビューからオブザーバを削除します。

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

しかしコンパイラは私に "Can not invok 'removeDownMenu'の引数リストを持つ 'removeObserver' "

何が間違っていますか?ありがとうございました!

答えて

1

ありlook at the documentationがあります:方法はremoveObserver(_ observer: NSObject, forKeyPath keyPath: String)と呼ばれます。だからあなたはする必要があります:

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

私は見る!どうもありがとうございます!私が読んだのは、object.removeObserver(anotherObject)は、指定されたオブジェクトのすべてのオブザーバ接続を削除するということでした。それは間違っていたと思う。もう一度ありがとう! – weka1

関連する問題