entfernen Ich habe folgenden Code, um UIView und UIButton als Tags innerhalb UIScrollView hinzufügen. Alles funktioniert gut, um Daten an UIScrollView anzuhängen. Problem ist, wie UIView & UIButton in UIScrollView entfernt wird. Ich habe es entfernt, aber es verschwindet nicht von der Benutzeroberfläche. Bitte helfen Sie mir, wie es geht.Wie UIView oder UIButton aus Superview innerhalb von UIScrollView in swift
Hier ist UIView & UIButton als Tags
var xOffset: CGFloat = 0;
var i = 0;
for location in locationNameStrs {
let myString: NSString = location as NSString
let size: CGSize = myString.sizeWithAttributes([NSFontAttributeName: UIFont(name: "HelveticaNeue", size: 13)!])
outletView = UIView(frame: CGRectMake(xOffset, 10, size.width + 40, 40))
outletView.tag = i
outletStrs = UIButton(frame: CGRectMake(0, 5, outletView.frame.size.width, 25))
outletStrs.setTitle(location, forState: .Normal)
outletStrs.titleLabel?.textAlignment = NSTextAlignment.Center
outletStrs.backgroundColor = UIColor(red:0.00, green:0.45, blue:0.74, alpha:1.0)
outletStrs.layer.cornerRadius = 12.5
outletStrs.tag = i
outletStrs.addTarget(self, action: #selector(self.removeTags(_:)), forControlEvents: UIControlEvents.TouchUpInside)
outletStrs.titleLabel?.font = UIFont(name: "HelveticaNeue", size: 13)!
let closeImg = UIImageView (frame: CGRectMake(outletStrs.frame.size.width - 30, 0, 25, 25))
closeImg.image = UIImage(named: "close")
closeImg.contentMode = UIViewContentMode.Right
outletStrs.addSubview(closeImg)
outletView.addSubview(outletStrs)
tagScrollView.addSubview(outletView)
xOffset = xOffset + size.width + 50
i = i + 1
}
tagScrollView.contentSize = CGSizeMake(xOffset + 50, 50)
Hier ist zu entfernen, aber Problem ist die nicht verschwinden von UI
func removeTags(sender: UIButton) {
let ok = UIAlertAction(title: "OK", style: .Default) { (action:UIAlertAction!) in
if self.locationNameStrs.contains(self.locationNameStrs[sender.tag]) {
self.locationNameStrs.removeAtIndex(sender.tag)
self.outletView.removeFromSuperview()
self.outletStrs.removeFromSuperview()
self.closeImg.removeFromSuperview()
self.addButton.removeFromSuperview()
self.displayOutletTags()
}
}
}
Haben Sie mit Debugger/Console-Ausgabe verifiziert, dass der 'if'-Zweig tatsächlich ausgeführt wird? Es macht auch keinen Sinn, etwas außer der obersten Ebene "outletView" zu entfernen. Es wird alle seine Unteransichten damit aufnehmen. – BaseZen
Auch die if-Logik macht keinen Sinn, weil Sie ein Array fragen, wenn es eines seiner eigenen Mitglieder enthält. Die einzige Alternative wäre, dass "sender.tag" außerhalb der Grenzen liegt, was Ihr Programm zum Absturz bringen könnte. – BaseZen
@BaseZen können Sie mir vorschlagen, wie es geht? – ppshein