1

我在与 UITableView 相同的 nib 文件中设计了一个自定义 UITableViewCell。然后我使用以下代码显示它:

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

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

    // Configure the cell...
    NSInteger section = [indexPath section];

    switch (section) {
        case 0: // First cell in section 1
            return self.priceRangeCell;
            break;
        default:
            // Do something else here if a cell other than 1,2,3 or 4 is requested

            return cell;
            break;
    }

我的问题是我对整个 dequeueReusableCellWithIdentifier 业务感到困惑。我什至需要以下部分吗??:

 static NSString *CellIdentifier = @"SearchViewCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

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

你能看到我的代码有什么其他问题吗?

谢谢

4

1 回答 1

0

您不必绝对使用您提到的代码,但不这样做会很糟糕。如果您不使用该 if 子句,则每次滚动表格时都会创建新单元格,而不是重用旧单元格——这对内存使用不利。

其次,你的代码中缺少一些东西——你没有用任何东西填充你的单元格。您返回了一个单元格,但尚未向其中添加任何内容。

于 2012-08-13T15:51:02.360 回答