0

在我的代码中,当我在表格视图中选择一个单元格时,它也会选择另一个单元格。谁能帮忙解决这个问题。

这是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    // Configure the cell...
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    // Display recipe in the table cell
    Player *player = [players objectAtIndex:indexPath.row];

    UILabel *playerIdLabel = (UILabel *)[cell viewWithTag:104];
    playerIdLabel.text = player.pid;

    UIImageView *playerImageView = (UIImageView *)[cell viewWithTag:100];
    playerImageView.image = [UIImage imageNamed:player.imageFile];

    UILabel *playerNameLabel = (UILabel *)[cell viewWithTag:101];
    playerNameLabel.text = player.name;

    UILabel *playerDetailLabel = (UILabel *)[cell viewWithTag:102];
    playerDetailLabel.text = player.detail;

    UIButton *playerAddButton = (UIButton *)[cell viewWithTag:103];

    // Assign our own background image for the cell
    UIImage *background = [self cellBackgroundForRowAtIndexPath:indexPath];

    UIImageView *cellBackgroundView = [[UIImageView alloc] initWithImage:background];
    cellBackgroundView.image = background;
    cell.backgroundView = cellBackgroundView;

    return cell;
}


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

        UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
        UILabel *playerNameLabel = (UILabel *)[cell viewWithTag:101];
        NSString *playerName = playerNameLabel.text;

        UILabel *playerIdLabel = (UILabel *)[cell viewWithTag:104];
        [playerIdLabel setHidden:NO];
}
4

2 回答 2

0

试试这个设置 nil 来重用标识符。

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:nil];
于 2013-09-19T09:43:56.623 回答
0

我认为您可能已经从 IB 中减小了 Cell 的大小,而忘记使用委托方法设置高度。尝试这个

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    return 30.0;
}
于 2013-09-19T09:45:33.363 回答