如何在NSArray的cell.imageview.image上显示图像?

时间:2013-05-23 15:22:23

标签: iphone objective-c uitableview uiimageview

Image Array=[NSArray arrayWithObjects:[UIImage imageNamed:@"1 (1).gif"],
            [UIImage imageNamed:@"1 (2).gif"],[UIImage imageNamed:@"1 (3).gif"],[UIImage imageNamed:@"1 (4).gif"],[UIImage imageNamed:@"1 (5).gif"],[UIImage imageNamed:@"1 (6).gif"],[UIImage imageNamed:@"1 (7).gif"],nil];

//here is another array of objects showing in table view

alphabetsArray =[[NSMutableArray alloc]initWithObjects:@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z",nil];
    //everything working fine until when i add this code,app crashes with SIGABRT
cell.imageView.image=[UIImage imageNamed:[imageArray objectAtIndex:indexPath.row]];

其实我需要再问一些事情:

  1. 如果数组中的图像数量不等于tableview中的对象数,是否有任何问题?
  2. 除了uiimage imageNamed:“whatever.jpeg”
  3. 之外,还有其他方法可以添加图片吗?
  4. 如果添加文件夹并提供其地址或名称并自行选择图像,该怎么办..
  5. 如果项目中的图像数量为250,那么在项目中添加图像的最合理方法是什么(i-e sqlite,coreData,项目中的硬编码和我一样)?

5 个答案:

答案 0 :(得分:3)

首先,此行[UIImage imageNamed:[imageArray objectAtIndex:indexPath.row]]存在问题。

[imageArray objectAtIndex:indexPath.row]在当前实现中返回UIImage对象,并且您正在尝试使用UIImage对象的名称获取UIImage。

您应该直接将UIImage对象返回到cell.imageView.image。

cell.imageView.image = [imageArray objectAtIndex:indexPath.row];

其次,我不确定表中有多少行,但如果索引超过数组中的元素数,方法objectAtIndex可能抛出异常,导致应用程序崩溃。

答案 1 :(得分:1)

1)除非你想拥有相同的号码,否则没有问题。它不会引发错误,但您的应用逻辑将无法正常工作。

2)不是我知道的,虽然很容易做到这一点,使用简单的命名约定,例如image01,这样你就可以复制并粘贴代码并更改图像的结束数< / p>

3)我不确定你在问什么。

4)通常,您只需要通过drag-N'-drop或选择文件将图像添加到项目中。核心数据和sqlite适用于您正在开发的实际应用程序,而不是用于在Xcode中存储图像。

至于主要问题,你说你要显示来自NSArray的图像,如果是这种情况,只需获取tableview的索引路径,然后使用{{1}查找相应的图像}

希望有所帮助:)

答案 2 :(得分:1)

实际上我已经找到了一些东西,有一个简单的方法。

cell.imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@.gif", [TextShownInTableArray objectAtIndex:indexPath.row]]];

我在这个数组中有字母,我想在每个字母表中使用不同的图像,所以只需在项目中添加与字母相同的图像。这行代码很好用。 TextShownInTableArray是带有文本的数组:)

答案 3 :(得分:0)

Image Array=[NSArray  alloc]initWithObjects:[UIImage imageNamed:@"8.gif"],
        [UIImage imageNamed:@"2.gif"],[UIImage imageNamed:@"3.gif"],[UIImage imageNamed:@"6.gif"],[UIImage imageNamed:@"5.gif"],[UIImage imageNamed:@"4.gif"],[UIImage imageNamed:@"7.gif"],nil];

您的数组alloc和该数组'保留'此数组并尝试此代码。谢谢

[imageArray retain];

只更改此行的代码。并解决你的问题

cell.imageView.image=[imageArray objectAtIndex:indexPath.row];

我希望这段代码对你有用。检查一下

答案 4 :(得分:0)

cell.imageView.frame = CGRectMake(5, 5, 50, 50);

NSString *imgstr = [[Arr objectAtIndex:indexPath.row] objectForKey:@"thumb"];

cell.imageView.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imgstr]]];