我在iOS项目中的.jpgs
中有几个hunderd /Resources
。
这是viewDidLoad方法:
- (void)viewDidLoad {
NSArray *allPosters = [[NSBundle mainBundle] pathsForResourcesOfType:@"jpg" inDirectory:@"."];
[super viewDidLoad];
}
以上内容成功将所有.jpgs
加载到NSArray
。
我只需要在.jpgs
中的UITableViewCells
中显示此数组中的所有UITableView
以下是-(UITableViewCell *)tableView:cellForRowAtIndexPath:
方法:
-(UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
NSDictionary *posterDict = [allPosters objectAtIndex:indexPath.row];
NSString *pathToPoster= [posterDict objectForKey:@"image"];
UITableViewCell *cell =
[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell ==nil ) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]autorelease];
}
UIImage *theImage = [UIImage imageNamed:pathToPoster];
cell.ImageView.image = [allPosters objectAtIndex:indexPath.row];
return cell;
}
我知道问题出在cell.ImageView.image
,但我不确定问题是什么?如何从阵列中抓取每个.jpg
并在每行中显示?
答案 0 :(得分:2)
尝试使用[UIImage imageWithContentsOfFile:pathToPoster]
而不是imageNamed
。并将值设置为UIImage对象。
答案 1 :(得分:2)
NSArray *allPosters = [[NSBundle mainBundle] pathsForResourcesOfType:@"jpg" inDirectory:@"."];
这将为您提供一系列路径(由方法名称建议)。这些路径是NSStrings。 但是您将此数组分配给局部变量,并且在您离开viewDidLoad后此变量将消失。
因此您必须将其更改为以下内容:
allPosters = [[[NSBundle mainBundle] pathsForResourcesOfType:@"jpg" inDirectory:@"."] retain];
另一个:
NSDictionary *posterDict = [allPosters objectAtIndex:indexPath.row];
NSString *pathToPoster= [posterDict objectForKey:@"image"];
如果您已正确分配数组,这肯定会崩溃。
将其更改为
NSString *pathToPoster = [allPosters objectAtIndex:indexPath.row];
下一个:
UIImage *theImage = [UIImage imageNamed:pathToPoster];
cell.ImageView.image = [allPosters objectAtIndex:indexPath.row];
UIImages imageNamed:不适用于路径,需要文件名。当然,您希望将真实图像分配给imageview而不是海报的路径。所以改变它:
UIImage *theImage = [UIImage imageNamed:[pathToPoster lastPathComponent]];
cell.imageView.image = theImage;
答案 2 :(得分:1)
这可能只是一个错字,但应该是:
//lowercase "i" in imageView
cell.imageView.image = [allPosters objectAtIndex:indexPath.row];
此外 - 您正在创建UIImage * theImage,但之后您不会使用它。那里发生了什么?