2016-06-04 26 views
7

Tôi đang cố gắng thêm nhãn trong Swift, được thêm vào trong một vòng lặp. Sau đó tôi muốn thêm sự kiện 'TapGesture' vào mỗi sự kiện khi chúng được thêm vào. Nó hoạt động, nhưng vấn đề là chức năng gọi là lấy dữ liệu từ nhãn để sử dụng khi nó được nhấp, nhưng nhãn đã được định nghĩa lại bởi nó và nó lấy dữ liệu từ cái cuối cùng được thêm vào, không phải là dữ liệu được nhấn. Làm thế nào tôi có thể làm cho mỗi người duy nhất?Cách 'addTarget' vào UILabel trong 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 
    } 
} 

Đoạn code dưới đây là nhận dạng cử chỉ mà được các dữ liệu nhãn và sử dụng nó:

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) 
} 
+0

Được rồi cảm ơn bạn. –

+0

Từ mã bạn đã đăng, có vẻ như bạn chỉ có một nhãn. Bạn thay đổi các thuộc tính của nó nhưng bạn không tạo một thuộc tính mới (trừ khi nó nằm trong mã mà bạn không bao gồm). –

Trả lời

6

Các hàm điều khiển cho một UITapGestureRecognizer được thông qua UITapGestureRecognizer như sender. Bạn có thể truy cập vào view rằng nó được gắn với thuộc tính view. Tôi sẽ đề nghị một cái gì đó như thế này:

func handleTap(sender: UITapGestureRecognizer) { 
    guard let a = (sender.view as? UILabel)?.text else { return } 

    ... 
} 

Bạn cũng sẽ cần phải thay đổi chữ ký của selector của bạn:

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTap)) 

hoặc cho các phiên bản trước đó của Swift:

let tapGesture = UITapGestureRecognizer(target: self, action: "handleTap:") 
+0

Nó hoạt động hoàn hảo. Cảm ơn bạn! –

+0

Tôi hiện đang gặp sự cố khi thêm giá trị cho một khóa không xác định cho mỗi nhãn? Tôi đang cố gắng lưu trữ dữ liệu trong đó nhưng vẫn gặp lỗi "UncaughtNSException" và "đây không phải là khiếu nại mã hóa chính" –

+0

Bạn đang cố gắng làm gì? Cập nhật văn bản của nhãn? Bạn có thể hiển thị dòng mã cho bạn lỗi không? – vacawama

Các vấn đề liên quan