如何在 Swift 中知道发件人的标识符

Str*_* B. 0 ios uitapgesturerecognizer segue swift

我有两个UILabels,两个UITapGestureRecognizers在一个UITableViewCell.

cell.Username.tag = indexPath.row
cell.SharedUser.tag = indexPath.row
let tapGestureRecognizer2 = UITapGestureRecognizer(target:self, action:"GoToProfil:")
let tapGestureRecognizer3 = UITapGestureRecognizer(target:self, action:"GoToProfil:")
cell.Username.userInteractionEnabled = true
cell.Username.addGestureRecognizer(tapGestureRecognizer2)
cell.SharedUser.userInteractionEnabled = true
cell.SharedUser.addGestureRecognizer(tapGestureRecognizer3)

func GoToProfil (sender: AnyObject!) {
    self.performSegueWithIdentifier("GoToProfilSegue", sender: sender)
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 aSegue来推送另一个UIViewController,并且我正在覆盖该PrepareSegue函数以发送与Sender标签相对应的所需信息。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {

    let ProfilView = segue.destinationViewController as! Profil
    ProfilView.hidesBottomBarWhenPushed = true
    ProfilView.title = posts[sender.view!.tag].User?.objectForKey("Name") as? String
    ProfilView.User = posts[sender.view!.tag].User
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我想知道UILabel按下了哪个,知道我已经在使用tag.

rma*_*ddy 5

您的GoToProfile:函数应该正确编写。参数不是“发送者”,而是手势识别器。

func GoToProfil (gestureRecognizer: UITapGestureRecognizer) {
}
Run Code Online (Sandbox Code Playgroud)

从那里,您可以使用 view手势识别属性。

但是您似乎有两个相互矛盾的要求。你想知道两个标签中的哪一个被点击了,你想知道标签在哪一行。

通常你会使用标签的 tag来了解点击了两个标签中的哪一个。但是您正在使用他们的标签来跟踪行。

我推荐的解决方案是使用标签来区分两个标签。然后您可以根据标签的框架计算行。

有关将单元格子视图的框架转换为单元格子视图的框架的示例代码,请参阅以下答案indexPath。