在不是UITableViewDelegate的函数中重用UITableViewCell

时间:2010-01-21 21:45:35

标签: uitableview

我有一个不同的问题。

我正在创建我的TableViewCells,如:


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell;
    UILabel *label = nil;

    NSString *cellIdentifier = [NSString stringWithFormat:@"Cell_%i", indexPath.row];

    cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:cellIdentifier] autorelease];
        //cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:cellIdentifier];
        label = [[UILabel alloc] initWithFrame:CGRectZero];
        [label setLineBreakMode:UILineBreakModeWordWrap];
        [label setMinimumFontSize:FONT_SIZE];
        [label setNumberOfLines:0];
        [label setFont:[UIFont systemFontOfSize:FONT_SIZE]];
        [label setTag:1];


        [[cell contentView] addSubview:label];

    }
return cell;
}

如您所见,我的单元格包含“Cell_0,Cell_1等”标识符

并且在一个不是TableView方法的函数中,我想通过调用它们的标识符来使用这个单元格。我这样做:


UITableViewCell *cell  = [myTableView dequeueReusableCellWithIdentifier:[NSString stringWithFormat:@"Cell_%i", myCellID]];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:[NSString stringWithFormat:@"Cell_%i", myCellID]];
    }
UILabel *label = (UILabel*)[cell viewWithTag:1];
我不能这样用吗?

我正在尝试更改我尝试访问的单元格中的标签颜色,但我不能。细胞不是零,但标签总是零。我该怎么办?

我怎么能理解我想要的细胞还是一个空细胞?

2 个答案:

答案 0 :(得分:1)

NSString *cellIdentifier = [NSString stringWithFormat:@"Cell_%i", indexPath.row];

cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

这破坏了细胞再利用的全部目的!

对于“看起来”相同的所有单元格(即具有相同的子视图),您应该使用相同的单元格标识符,并且只更改其内容。

要获取您为特定行创建的单元格,请使用[tableView cellForRowAtIndexPath:indexPath]

答案 1 :(得分:1)

好吧我通过填充数组中的所有indexPath并在调用单元格时调用该数组的索引路径来解决我的问题。谢谢你的答案