Ich möchte eine Unteransicht hinzufügen und mit einem Fingertipp entfernen. Das ist mein Code:
/ * Unteransicht hinzufügen * /
var testView: UIView = UIView(frame: CGRectMake(0, 0, 320, 568))
testView.backgroundColor = UIColor.blueColor()
testView.alpha = 0.5
testView.tag = 100
super.view.userInteractionEnabled = false
self.view.userInteractionEnabled = true
self.view.addSubview(testView)
/ * Unteransicht entfernen * /
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
let touch = touches.anyObject() as UITouch
let point = touch.locationInView(self.view)
if(testView.tag==100){
println("Tag 100")
testView.removeFromSuperview()
}
else{
println("tag not found")
}
}
Aber das Entfernen funktioniert nicht Jemand kann mir bitte helfen? Vielen Dank!
Antworten:
Danke für die Hilfe. Dies ist die Lösung: Ich habe die Unteransicht erstellt und eine Geste hinzugefügt, um sie zu entfernen
@IBAction func infoView(sender: UIButton) { var testView: UIView = UIView(frame: CGRectMake(0, 0, 320, 568)) testView.backgroundColor = UIColor.blueColor() testView.alpha = 0.5 testView.tag = 100 testView.userInteractionEnabled = true self.view.addSubview(testView) let aSelector : Selector = "removeSubview" let tapGesture = UITapGestureRecognizer(target:self, action: aSelector) testView.addGestureRecognizer(tapGesture) } func removeSubview(){ println("Start remove sibview") if let viewWithTag = self.view.viewWithTag(100) { viewWithTag.removeFromSuperview() }else{ println("No!") } }
Aktualisieren:
Swift 3+
@IBAction func infoView(sender: UIButton) { let testView: UIView = UIView(frame: CGRect(x: 0, y: 0, width: 320, height: 568)) testView.backgroundColor = .blue testView.alpha = 0.5 testView.tag = 100 testView.isUserInteractionEnabled = true self.view.addSubview(testView) let aSelector : Selector = #selector(GasMapViewController.removeSubview) let tapGesture = UITapGestureRecognizer(target:self, action: aSelector) testView.addGestureRecognizer(tapGesture) } func removeSubview(){ print("Start remove sibview") if let viewWithTag = self.view.viewWithTag(100) { viewWithTag.removeFromSuperview() }else{ print("No!") } }
quelle
Sie müssen die
viewWithTag
Funktion verwenden, um die Ansicht mit der angegebenen zu findentag
.override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { let touch = touches.anyObject() as UITouch let point = touch.locationInView(self.view) if let viewWithTag = self.view.viewWithTag(100) { print("Tag 100") viewWithTag.removeFromSuperview() } else { print("tag not found") } }
quelle
Angenommen, Sie haben Zugriff über Steckdosen oder Programmcode, können Sie ihn entfernen, indem Sie auf Ihre Ansicht
foo
und dieremoveFromSuperview
Methode verweisenquelle
Ich habe eine Ansicht in meiner benutzerdefinierten CollectionViewCell und binde ein Diagramm in diese Ansicht ein. Um es zu aktualisieren, muss ich überprüfen, ob in dieser Ansicht bereits ein Diagramm platziert ist, es entfernen und dann neu anwenden. Hier ist die Lösung
cell.cellView.addSubview(graph) graph.tag = 10
Jetzt im Codeblock, in dem Sie es entfernen möchten (in Ihrem Fall gestureRecognizerFunction).
if let removable = cell.cellView.viewWithTag(10){ removable.removeFromSuperview() }
um es wieder einzubetten
cell.cellView.addSubview(graph) graph.tag = 10
quelle
Testete diesen Code mit XCode 8 und Swift 3
So fügen Sie SuperView eine benutzerdefinierte Ansicht hinzu:
self.view.addSubview(myView)
So entfernen Sie die benutzerdefinierte Ansicht aus der Übersicht:
self.view.willRemoveSubview(myView)
quelle