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

时间:2015-01-09 18:20:16

标签: ios objective-c iphone uitableview

我有一张桌子,当我点击一个单元格时,我希望能够访问该单元格,以便我可以更改该单元格的某些属性,但由于某种原因,它每次都会创建一个新单元格。我可以这么说,因为每次点击一个单元格时都会调用- (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];

}

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

我真的很感激任何帮助。

1 个答案:

答案 0 :(得分:5)

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

而不是写作:

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

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

tableView的当前单元格设为indexPath