根据从NSUserDefaults加载的对象将图像加载到tableview单元格中

时间:2013-02-16 15:51:23

标签: image uitableview xcode4.5 nsuserdefaults

我有一个由NSUserDefaults加载的对象填充的tableview。

具体来说 - 当用户按下一个视图控制器中的按钮时,会将一个字符串加载到NSUserDefaults中,然后将其加载到一个数组中,最后填充一个表视图。

我想知道如何在每个tableview单元格中加载图像,具体取决于从NSUserDefaults加载的字符串?

我不想在NSUserDefaults中保存图像,因为我知道这不是一个好主意。

我该怎么办?

感谢您的时间(并帮助新手)!


更新19FEB13

我加载到NSUserDefaults的字符串是对象的名称,例如“ARCX”。

目前我已经尝试了各种代码,但我似乎有一种误解/缺乏知识(或两者兼而有之)。

UITableViewCell *XCell = [tableView cellForRowAtIndexPath:IndexPath];
NSString *content = Xcell.textLabel.text;

if ([content isEqualToString:@"ARCX"]) [UIImage *Image = [UIImage imageNamed @"ARCX.png"]];

显然我从这段代码中得到错误。

希望你能帮忙!


更新20FEB13

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     NSString *string = [myOBJArray objectAtIndex:indexPath.row];
     static NSString *CellIdentifier = @"XCell";
     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
     if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        UIView *cellbackground = [[UIView alloc] initWithFrame:CGRectZero];
        cellbackground.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"MSP cell bg MK2.png"]];
        cell. backgroundView = cellbackground;

}

cell.textLabel.textColor = [UIColor yellowColor ];
cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:24.0];
cell.textLabel.text = string;


 UITableViewCell *XCell = [tableView cellForRowAtIndexPath:indexPath];
 NSString *content = XCell.textLabel.text;

 if ([content isEqualToString:@"ARCX"]) [UIImage *Image = [UIImage imageNamed: @"ARCX.png" ]];


cell.imageView.image = Image;

     return cell;

}

我确实有我最初在CellForRowAtIndexPath中发布的代码,但我知道我在实现中遗漏了一些东西(显然它不起作用!)。

感谢您的时间!


更新19Feb13

我这是我目前的CellForRowAtIndexPath。没有错误,但我的单元格中没有图像。我错过了什么?

我是否需要添加图像视图?我目前正在使用“基本”单元格,而不是自定义单元格。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *string = [myObjArray objectAtIndex:indexPath.row];
static NSString *CellIdentifier = @"MSCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    UIView *cellbackground = [[UIView alloc] initWithFrame:CGRectZero];
    cellbackground.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"MSP cell bg MK2.png"]];
    cell. backgroundView = cellbackground;
}

cell.textLabel.textColor = [UIColor blackColor ];
cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:24.0];
cell.textLabel.text = string;

if ([string isEqualToString:@"ARCX"])

cell.imageView.image = [UIImage imageNamed: @"ARCX.png"];

else if ([string isEqualToString:@"WPX"])

    cell.imageView.image = [UIImage imageNamed:@"WPX.png"];


 return cell;

}

感谢您的时间!

1 个答案:

答案 0 :(得分:1)

UITableViewCell *XCell = [tableView cellForRowAtIndexPath:indexPath];
NSString *content = XCell.textLabel.text;

请删除这段代码,因为它会一次又一次地调用cellForRowAtIndexPath。 您已将图像名称设为字符串

NSString *string = [myOBJArray objectAtIndex:indexPath.row];

所以改变下面的代码。

if ([string isEqualToString:@"ARCX"]) 
        UIImage *Image = [UIImage imageNamed: @"ARCX.png"];
cell.imageView.image = Image;