2016-04-18 3 views
1

Ich habe eine Datei UITableViewCell und es innerhalb von ich:Wie kann ich Key-Value Observer richtig zu meiner Schaltfläche hinzufügen?

var followers: FollowersModel? { 
    didSet { 
     self.followerButton.addObserver(self, forKeyPath: "followerButtonTapped", options: .New, context: &kvoContext) 
    } 
} 

override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) { 
    print(keyPath) 
} 

wo

private var kvoContext = 0 

Also, ich will: Wenn ich in diesen Zellen auf die Schaltfläche klicken, wird es Funktion von der Flucht ViewController. Aber beim Klicken auf meine Schaltfläche wird nichts gedruckt.

Es ist mein erstes Mal mit KVOs, mache ich etwas falsch?

Antwort

1

Nun, KVO funktioniert nicht so. Was tut, ist Beobachter registrieren, um KVO-Benachrichtigungen zu erhalten, wenn sich die Eigenschaft geändert hat. In Ihrem Fall nehme ich an, dass "followerButtonTapped" keine Eigenschaft ist. Registering for observation

Taste Griff angezapft Sie Ziel wie diese hinzufügen müssen (oder in IB):

cell.followerButton.addTarget(self, action: #selector(ViewController.onFollowerButtonTap(_:)), forControlEvents: .TouchUpInside) 

Und füge Methode zu Ihrem View-Controller:

func onFollowerButtonTap(sender: UIButton) { 

} 

für das Modell-Objekt zu erhalten Mit dieser Taste können Sie diese Erweiterung verwenden:

extension UITableView { 
    func indexPathForView(view: UIView) -> NSIndexPath? { 
     let hitPoint = view.convertPoint(CGPoint.zero, toView: self) 
     return indexPathForRowAtPoint(hitPoint) 
    } 
} 
Verwandte Themen