2016-07-29 7 views
0

Ich habe im Grunde Code, wo ich Schaltflächen auf meinem Bildschirm herum bewegen und wenn die Schaltfläche auf eine bestimmte Ansicht fallen gelassen wird, muss ich für diese Schaltfläche aus der Ansicht entfernt werden.Löschen einer Schaltfläche aus ViewController von seinem Unterklassencode?

Ich dachte, self.removeFromSuperview() würde vielleicht funktionieren, weil ich dachte, dass es basierend darauf basieren könnte, was der SuperView auf der Ansicht der Schaltfläche zum Zeitpunkt der Codeauslösung basiert? aber ich glaube, ich verstehe das alles nicht genau.

Gibt es eine Möglichkeit, dies in meiner touchesEnded-Funktion zu tun, wo ich überprüfe, ob die Schaltfläche in der Ansicht gelöscht wurde oder muss ich eine NSNotification an meine andere Ansicht senden und dort verarbeiten?

Ich habe gerade etwas ausdrucken atm und es funktioniert, die Löschung ist einfach nicht passiert.

Antwort

0

Sie müssen removeFromSuperview auf dem Tastenzeiger aufrufen.

myButton.removeFromSuperview()

Stellen Sie außerdem sicher, dass Sie removeFromSuperview auf dem Hauptthread sind aufgerufen wird.

0

Wenn ich Ihre Frage richtig verstehe, haben Sie UIButtons auf dem Bildschirm, und der Benutzer kann sie ziehen. Wenn Sie sie an eine bestimmte Stelle ziehen (nennen wir das den Papierkorb), möchten Sie sie entfernen.

Sie wollen sicherlich nicht Ihre eigenen View-Controller aus der Superview entfernen, was ist, was Self.removeFromSuperView() macht. Versuchen Sie stattdessen in touchesEnded:

override func touchesEnded(touches: Set, withEvent event: UIEvent) { 
    super.touchesEnded(touches, withEvent: event) 

    let touch: UITouch = touches.first as! UITouch 

    if touch.view.isKindOfClass(UIButton) { 
     touch.view.removeFromSuperview() 
    } 


} 
Verwandte Themen