发件人标记始终是相同的数据(错误的索引?)

时间:2016-09-17 15:00:10

标签: ios swift

我有以下单元格按钮的代码:

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

因此,当我点按buttonViewLinkAction时,我会在NSLog中打印正确的名称/图像,无论点击哪个单元格,它始终是正确的数据。这很好用,并创建另一个按钮:

    //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")

}

但是当我点击imgtagAction时,我总是从单元格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]"
}

我做错了什么?

1 个答案:

答案 0 :(得分:1)

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

imgtagAction

现在在var selectedItem = 0 方法中设置selectedItem值。

buttonViewLinkAction

现在在@IBAction func buttonViewLinkAction(sender: UIButton) { self.selectedItem = sender.tag //Your other code } 方法中使用此selectedItem

imgtagAction