我有一个不同的问题。
我正在创建我的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];
我不能这样用吗?
我正在尝试更改我尝试访问的单元格中的标签颜色,但我不能。细胞不是零,但标签总是零。我该怎么办?
我怎么能理解我想要的细胞还是一个空细胞?
答案 0 :(得分:1)
NSString *cellIdentifier = [NSString stringWithFormat:@"Cell_%i", indexPath.row];
cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
这破坏了细胞再利用的全部目的!
对于“看起来”相同的所有单元格(即具有相同的子视图),您应该使用相同的单元格标识符,并且只更改其内容。
要获取您为特定行创建的单元格,请使用[tableView cellForRowAtIndexPath:indexPath]
。
答案 1 :(得分:1)
好吧我通过填充数组中的所有indexPath并在调用单元格时调用该数组的索引路径来解决我的问题。谢谢你的答案