在UITableView中使用UIButton发送多个标签

时间:2015-10-04 20:07:18

标签: ios swift uitableview uibutton

我很难向函数发送两个标签以显示UIActivityViewController并共享单元格数据,就在我以前一次发送一个值并且在一个UIButton内之前:

cell.sharefb.tag = indexPath.row
cell.sharefb.addTarget(self, action: "showAlert:", forControlEvents:UIControlEvents.TouchUpInside)

但是现在我已经在UITableView中实现了部分,所以我的数组就像:

Array[indexPath.section][indexPath.row]

其中一个(部分或行)一次是不够的,我需要将两者都发送到我的功能?我怎么能这样做?

func showAlert(sender:AnyObject){
    // i want to use it like :
    Array[sender.sectionvalue][sender.rowvalue]
}

1 个答案:

答案 0 :(得分:10)

您可以对UIButton进行子类化并为您需要的数据添加属性,例如

class MyButton : UIButton {

var row : Int?
var section : Int?

}

然后你可以设置这些属性,在你的showAlert函数中你可以让它们恢复并使用:

 func showAlert(sender:AnyObject){

    let theButton = sender as! MyButton

    let section = theButton.section
    let row = theButton.row

    }

修改:根据要求的评论添加了设置按钮的位置:

在你的StoryBoard中,确保你的按钮是MyButton类型(而不是UIButton)。

然后用于设置标记的位置,请勿使用标记但设置属性。所以替换这段代码:

cell.sharefb.tag = indexPath.row
cell.sharefb.addTarget(self, action: "showAlert:", forControlEvents:UIControlEvents.TouchUpInside)

使用:

 cell.sharefb.row = indexPath.row
 cell.sharefb.section = indexPath.section
 cell.sharefb.addTarget(self, action: "showAlert:", forControlEvents:UIControlEvents.TouchUpInside)