0

我对 xcode na objective-c 很陌生,所以我很抱歉这个愚蠢的问题。我要做的是根据id将图像加载到UITableView中的单元格。xml 中的每个对象都有 id 和图像名称 id id.jpg。我完成了正确加载它们但是当我滚动图像时消失了。根据我的发现,它看起来与 dequeueReusableCellWithIdentifier 有关,但我无法弄清楚它是什么。这是我用来加载图像的代码:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *cellIdentifier = @"cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

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

    theList = [app.listArray objectAtIndex:indexPath.row];

    NSString *trimmedString = [theList.t_image stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

    cell.imageView.image = [UIImage imageNamed:trimmedString];
    cell.textLabel.text = theList.t_name;
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

    if(cell.imageView.image == nil){
        cell.imageView.image = [UIImage imageNamed:@"untitled.jpg"];
    }

    return cell;
}

这是xml:

<taxis>
<taxi>
<t_id>1</t_id>
<t_image>1.jpg</t_image>
<t_name>AAA Taxi</t_name>
<t_tel>+42014014</t_tel>
<t_addr>Vodičkova 40</t_addr>
<t_web>www.radiotaxiaaa.cz</t_web>
<t_getin>40</t_getin>
<t_km>26.9</t_km>
<t_wait>5</t_wait>
<t_city>Praha</t_city>
</taxi>
<taxi>
<t_id>2</t_id>
<t_image>2.jpg</t_image>
<t_name>Modrý anděl</t_name>
<t_tel>+420737222333</t_tel>
<t_addr>Cukrovarská 33</t_addr>
<t_web>www.modryandel.cz</t_web>
<t_getin>40</t_getin>
<t_km>19</t_km>
<t_wait>6</t_wait>
<t_city>Praha</t_city>
</taxi>
</taxis>

感谢您的任何回答。

4

1 回答 1

0

所有行都有图片吗?如果不确定在方法的开头将 cell.imageView 设置为 nil 之后

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

UPDATE:如果我是你,我会将图像缓存在一个数组中并在 cellforrowatindexpath 方法中从这个数组加载它们。试试这个我可能会工作。注意你不能将 nil 作为对象添加到 NSmutablearray 所以你需要添加另一个值而不是nil 和 UIimage

于 2012-10-19T14:59:56.330 回答