xcode - 如何以正确的方式从xml加载图像?

时间:2012-10-19 13:36:10

标签: iphone xml xcode uitableview

我对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>

感谢您的回答。

1 个答案:

答案 0 :(得分:0)

所有行都有图片吗?如果不确保在

之后的方法的beginnign处将cell.imageView设置为nil
if(cell == nil){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}

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