点击 UITableView 单元格正在创建一个新单元格

Tapping a UITableView cell is creating a new cell

我有一个 table,当我单击一个单元格时,我想访问该单元格,以便我可以更改该单元格的某些属性,但由于某种原因,每个单元格都会创建一个新单元格时间。我可以这么说,因为每次我点击一个单元格时都会调用 - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

这是我创建单元格的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    static NSString *CellIdentifier = @"AccountsCell";

    NSLog(@"AccountsTableViewController : cellForRow");

    AccountsTableViewCell *cell = (AccountsTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (nil == cell)
    {

        cell = [[AccountsTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

    }

    [cell setCurrentAccount:[self.accounts objectAtIndex:indexPath.row]];

    cell.delegate = self;

    return cell;

}

选择单元格:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    AccountsTableViewCell *cell = (AccountsTableViewCell *)[self tableView:tableView cellForRowAtIndexPath:indexPath];

}

有谁知道为什么每次都创建一个新单元格而不是给我一个被点击的单元格的引用?

非常感谢任何帮助。

您实际上是通过使用 tableViewindexPath 作为参数重新运行 tableView:cellForRowAtIndexPath 方法来创建新的 AccountsTableViewCell

而不是写作:

AccountsTableViewCell *cell = (AccountsTableViewCell *)[self tableView:tableView cellForRowAtIndexPath:indexPath];

尝试

AccountsTableViewCell *cell = (AccountsTableViewCell *)[tableView cellForRowAtIndexPath:indexPath];

获取 tableViewindexPath 的当前单元格。