Ich habe eine Klasse, die das Ziehen von UIButtons auf dem Bildschirm steuert. Ich möchte den Tag/die endgültige Position des Buttons auf touchesEnded erfassen.Keine Angabe bei der Weitergabe von Informationen mit NSNotifications?
Ich habe in meinem DragImageClass bekam:
override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
let dict = ["position":String(self.center),"tag": String(self.tag)]
NSNotificationCenter.defaultCenter().postNotificationName("buttonDropped", object: nil, userInfo: dict)
print(dict["position"]) // Does get printed
print("Should have sent") // Does get called
}
dann in meinem Hauptansicht, wo ich die Informationen habe, um die ich habe:
Mein Beobachter:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(testController.touchesStopped(_:)), name: "buttonDropped", object: nil)
Meine Funktion:
func touchesStopped(notif : AnyObject) {
if let dict = notif.object as? NSDictionary { //Some error with this data type I guess?
let position = dict["position"]
let tag = dict["tag"]
print(position) // doesn't get printed
print(tag) // doesn't get printed
}
}
Alle ide als warum ich von diesen Werten nichts zurückbekomme? Wenn ich versuche, das Auspacken zu erzwingen, gebe ich nur die "Thread bad instruction" Sache.
Okay, das macht viel Sinn. Ich habe es umgestellt und bekomme immer noch einen Fehler, der besagt, dass .userInfo mehrdeutig verwendet wird? –
Siehe meine Bearbeitung, die Benachrichtigung muss als 'NSNotification' deklariert werden, nicht' AnyObject' – deadbeef
Yep funktioniert perfekt, danke Mann. –