我有这个:
let mapsbut = cell.viewWithTag(912) as! UIButton
mapsbut.addTarget(self, action: "mapsHit:", forControlEvents: UIControlEvents.TouchUpInside)
和
func mapsHit(){
// get indexPath.row from cell
// do something with it
}
这是如何完成的?
答案 0 :(得分:1)
您始终可以使用按钮中的 tag
来传递或保留自定义单元格实现中的值或var。例如,如果您的outlet
(,例如)中的按钮为UITableViewCell
:
class MenuViewCell: UITableViewCell {
@IBOutlet weak var titlelabel: UILabel!
@IBOutlet weak var button: UIButton! {
didSet {
button.addTarget(self, action: "mapsHit:", forControlEvents: UIControlEvents.TouchUpInside)
}
}
func mapsHit(sender: UIButton){
let indexPathOfThisCell = sender.tag
println("This button is at \(indexPathOfThisCell) row")
// get indexPath.row from cell
// do something with it
}
}
请注意,您需要在设置“mapsHit:”时将sender:UIButton
设置为参数。这将是用户点击的按钮本身。
现在,为此,您的代码不能“912”。相反,当您构建单元格时,请指定按钮的tag
属性,其值为indexPath
。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("MenuViewCell", forIndexPath: indexPath) as! MenuViewCell
cell.titlelabel?.text = data[indexPath.row].description
cell.button.tag = indexPath.row
return cell
}
答案 1 :(得分:0)
...一个解决方案可能是在您的类中包含一个var,其中包含最后一个单元格的indexPath
,然后您可以在mapsHit()
函数中使用该值。