我有以下手机按键代码:

    cell.buttonViewLink.addTarget(self, action: "buttonViewLinkAction:", forControlEvents: UIControlEvents.TouchUpInside)
    cell.buttonViewLink.tag = indexPath.item

因此,当我点击buttonViewLinkAction时,无论点击哪个单元格,都会得到正确的名称/图像。这很好,并创建了另一个按钮:
    //get buttonViewLinkAction and copy to pasteboard
@IBAction func buttonViewLinkAction(sender: UIButton) {
    print("buttonViewLinkAction tapped")
    let face = self.faces[sender.tag]
    if let imageNAME: String = String(face.name){
        print(imageNAME .uppercaseString)
    }
    if let imageURL = NSURL(string:face.image) {
        print(imageURL)
    }

    UIPasteboard.generalPasteboard().string = face.directLink

    let alertView = SCLAlertView()
    alertView.addButton("Add [img] tags", target:self, selector:Selector("imgtagAction:"))
    alertView.showSuccess((face.name), subTitle: "Image link copied to clipboard")

}

但当我点击NSLog时,我总是从单元格1获取数据。
    //get imgtagAction click
func imgtagAction(sender: UIButton!) {
    print("imgtagAction tapped")
    let face = self.faces[sender.tag]

    if let imageNAME: String = String(face.name){
        print(imageNAME .uppercaseString)
    }
    if let imageURL = NSURL(string:face.image) {
        print(imageURL)
    }
    UIPasteboard.generalPasteboard().string = "[img]" + face.directLink + "[/img]"
}

我做错什么了?

最佳答案

正如rmaaddy所评论的,您没有用按钮设置tag,我认为可能无法将tag设置为自定义的按钮操作,所以我认为您需要声明一个实例属性,并在AlertView方法中设置其值,然后在Int方法中使用该实例。

var selectedItem = 0

现在在buttonViewLinkAction方法中设置imgtagAction值。
@IBAction func buttonViewLinkAction(sender: UIButton) {
    self.selectedItem = sender.tag
    //Your other code
}

现在使用selectedItem内部buttonViewLinkAction方法。
func imgtagAction(sender: UIButton!) {
    let face = self.faces[selectedItem]
}

10-08 08:05