reloadData不会在tableview中绘制单元格

时间:2011-08-04 09:49:23

标签: iphone objective-c uitableview

- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];

NSString *show=[NSString stringWithFormat:@"%@",[res objectAtIndex:18]];
float f=[show floatValue];
show1=[NSString stringWithFormat:@"%.2f %%",f];
[show1  retain];
[self.tableView reloadData];
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = nil;
if (indexPath.row % 2 == 0) {
    // EVEN
    cell = [tableView dequeueReusableCellWithIdentifier:@"EvenCell"];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"EvenCell"] autorelease];
        UIView *bg = [[UIView alloc] initWithFrame:cell.frame];
        UIColor *colour = [[UIColor alloc] initWithRed: (208.0/255.f) green: (231.0/255.f) 
                                                  blue: (241.0/255.f) alpha: 1.0];
        bg.backgroundColor = colour; 
        cell.backgroundView = bg;
        cell.textLabel.backgroundColor = bg.backgroundColor;
        [bg release];
        cell.detailTextLabel.backgroundColor=[UIColor clearColor];
        cell.detailTextLabel.text=show1;
    }
    cell.textLabel.text = [array objectAtIndex:indexPath.row];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

} 
else {
    // ODD
    cell = [tableView dequeueReusableCellWithIdentifier:@"OddCell"];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"OddCell"] autorelease];
        UIView *bg = [[UIView alloc] initWithFrame:cell.frame];

        UIColor *colour = [[UIColor alloc] initWithRed: (143.0/255.f) green: (169.0/255.f) 
                                                  blue: (180.0/255.f) alpha: 1.0];
        bg.backgroundColor = colour;
        cell.backgroundView = bg;
        cell.textLabel.backgroundColor = bg.backgroundColor;
        [bg release];
    }
    cell.textLabel.text = [array objectAtIndex:indexPath.row];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;


} 
return cell;
}   

这是我的代码,因为你可以看到我在viewDidAppear中重新加载数据show1是我的数据需要放入tableView的detailBabel.text单元格中。现在不要看我的奇怪的细胞部分因为它不可用的atm。我只有一个细胞和它的细胞。现在我的问题是当我删除[self.tableView reloadData];线它工作好不更新,但它显示单元格。当我把它我看不到一个单元格在tableView它所有空的任何想法为什么?我在哪里做错了?

EDIT1:

  cell.backgroundView = bg;
    cell.textLabel.backgroundColor = bg.backgroundColor;
    [bg release];
    cell.detailTextLabel.backgroundColor=[UIColor clearColor];
}
cell.detailTextLabel.text=show1;
cell.textLabel.text = [array objectAtIndex:indexPath.row];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

okey我改变它并将它从if中取出但是我仍然看不到任何表格单元格它只是导航栏名称和空单元格。为什么它空无一人?

2 个答案:

答案 0 :(得分:3)

字符串值Show1仅在初始化单元格期间设置。

cell.detailTextLabel.text=show1;

将上一行放在此行下方并检查。

cell.textLabel.text = [array objectAtIndex:indexPath.row];

答案 1 :(得分:3)

代码“cell.detailTextLabel.text = show1;”在if的if条件内(cell == nil) 当您重新加载单元格时,如果单元格已经可用,则不会进入代码块,并且不会显示更改的show1值。

代码
cell = [tableView dequeueReusableCellWithIdentifier:@"EvenCell"];

检查它们是否是可以重复使用的单元格。如果它发现那么它将返回相同的