Próbuję dodać etykiety w Swift, które są dodawane w pętli. Następnie chcę dodać wydarzenie "TapGesture" do każdego z nich, gdy zostaną dodane. Działa, ale problem polega na tym, że wywoływana funkcja pobiera dane z etykiety do użycia po kliknięciu, ale etykieta została przedefiniowana do tego czasu i pobiera dane z ostatnio dodanego, a nie tego, które zostało kliknięte. Jak mogę uczynić każdy z nich wyjątkowym?Jak "addTarget" do UILabel w Swift
self.label.attributedText = self.myMutableString
let tapGesture = UITapGestureRecognizer(target: self, action: handleTap(label))
self.label.userInteractionEnabled=true
self.label.addGestureRecognizer(tapGesture)
self.label.font = UIFont.boldSystemFontOfSize(28)
self.label.sizeToFit()
self.label.center = CGPoint(x: screenWidth, y: top)
if(kilom>=30||self.located==false){
self.scroller.addSubview(self.label)
if(device=="iPhone"||device=="iPhone Simulator"){
top = top+80
}
else{
top = top+140
}
}
Poniższy kod rozpoznawania jest gest, który pobiera dane etykiety i używa go:
func handleTap(sender:UILabel){
var a = self.label.text
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let resultViewController = storyBoard.instantiateViewControllerWithIdentifier("displayer")
self.presentViewController(resultViewController, animated: true, completion: nil)
}
Ok dziękuję. –
Z opublikowanego kodu wynika, że masz tylko jedną etykietę. Zmieniasz jego atrybuty, ale nie tworzysz nowego (chyba że jest to kod, którego nie uwzględniłeś). –