1
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. 如果数组中的图像数量不等于表格视图中的对象数量,是否有任何问题?
  2. 除了 uiimage imageNamed:"whatever.jpeg" 之外,如果它们的数量很大,还有其他方法可以添加图像吗
  3. 如果添加一个文件夹并给出其地址或名称,它会自行拾取图像。
  4. 如果它们的数量为 250(即 sqlite、coreData、我所做的项目中的硬代码),那么在项目中添加图像的最合理方法是什么?
4

5 回答 5

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 会抛出异常,导致应用程序崩溃。

于 2013-05-23T15:52:35.283 回答
1

1)这不会有问题,除非你想拥有相同的号码。它不会抛出错误,但您的应用程序逻辑将无法正常工作。

2)据我所知,这很容易做到,使用简单的命名约定,例如image01,这样您就可以复制和粘贴代码并更改图像的结尾数字

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

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

至于主要问题,你说你想显示来自的图像NSArray,如果是这样,只需获取 tableview 的索引路径,并使用查找相应的图像objectAtIndex:

希望那有所帮助 :)

于 2013-05-23T15:49:48.633 回答
1

其实我已经想通了,有一个简单的方法可以做到。

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

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

于 2013-05-27T10:25:42.193 回答
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];

您的数组分配和该数组“保留”该数组并尝试此代码。谢谢

[imageArray retain];

只更改您的代码这一行。并解决您的问题

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

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

于 2013-05-24T10:04:17.957 回答
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]]];
于 2013-05-24T12:34:06.507 回答