为什么cell标签在UITableView中返回相同的值?

时间:2016-01-07 12:52:30

标签: ios swift uitableview tags

在我的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,每次都是相同的值。为什么?我做错了什么?

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值。