在我的cellForRowAtIndexPath中,我将标签添加到我的单元格中:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell:people = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! people
cell.fullName.text = self.fullNames[indexPath.row]
cell.viewProfile.tag = indexPath.row
temp = cell.viewProfile.tag
cell.viewProfile.addTarget(self, action: "viewProfile:", forControlEvents: .TouchUpInside)
return cell
}
其中
var temp = 0
在顶级,在类声明下。
当我稍后再试:
func viewProfile(sender: UIButton) {
print(temp)
}
它返回2,每次都是相同的值。为什么?我做错了什么?
答案 0 :(得分:3)
如果您尝试获取单击按钮的索引。然后试试这个
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell:people = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! people
cell.fullName.text = self.fullNames[indexPath.row]
cell.viewProfile.tag = indexPath.row
cell.viewProfile.addTarget(self, action: "viewProfile:", forControlEvents: .TouchUpInside)
return cell
}
func viewProfile(sender: UIButton) {
print("Index : \(sender.tag)")
}
不需要临时变量。
答案 1 :(得分:0)
我认为你应该重写方法didSelectRowAtIndexPath来显示indexPath.row。您始终打印相同的值,因为在运行cellForRowAtIndexPath的情况下,它始终运行,直到显示在视图上的最后一个单元格。所以你总是得到相同的temp var值。