2013-07-25 32 views
2

我在文档目录上有不同的文件夹,并在每个文件夹上都有图像。现在我想显示来自不同文件夹的一个图像。我已经尝试过,但该方案是在线路上的冲突。UITableView Cell上的图像

- (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]; 
} 
//I dont know what put here for display from sqlite 

    NSUInteger row = [indexPath row]; 

    cell.textLabel.text = [array1 objectAtIndex:row]; 
    //cell.detailTextLabel.text = [array2 objectAtIndex:row]; 
NSString *b = [array2 objectAtIndex:row]; 
NSLog(@"b=%@",b); 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  NSUserDomainMask, YES); 
NSLog(@"%@",paths); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSError *error = nil; 
NSArray *imageFileNames = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",b]] error:&error]; 
NSLog(@"file=%@",imageFileNames); 

NSMutableArray *images = [[NSMutableArray alloc ] init]; 


for (int i = 0; i < [imageFileNames count]; i++) 
{ 
    NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:[NSString  stringWithFormat:@"%@/%d.png",b, i]]; 
    UIImage *img = [UIImage imageWithContentsOfFile:getImagePath]; 
    [images addObject:img]; 
    NSLog(@"%@",getImagePath); 
} 
NSLog(@"images=%@",images); 



cell.imageView.image=[imageFileNames objectAtIndex:0]; 
//NSLog(@"row=%u",row); 




return cell; 


} 
+0

哪里哟你得到错误? –

+0

cell.imageView.image = [imageFileNames objectAtIndex:0];当你只使用一个图像时,为什么要运行一个循环来为图像填充阵列,并且在每个单元格上也填充图像?其次,你能告诉我们你如何确定从每个文件夹显示哪个图像? –

+0

那么,我该怎么做。 – Nasir

回答

1

您可以直接使用[UIImage imageNamed:@""]的图像,而不是imageWithContentsOfFile

2

我认为你正在寻找的是这样的事情(请修改自己的喜好):

NSString *documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 

self.contents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documents error:NULL]; 

。 ..

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"Cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

cell.fileLabel.text = [self.contents objectAtIndex:indexPath.row]; 

// Build Documents Path with Folder Name 
NSString *documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *directory = [documents stringByAppendingPathComponent:[self.contents objectAtIndex:indexPath.row]]; 

NSFileManager *fM = [NSFileManager defaultManager]; 

// Get Attributes 
NSDictionary *fileAttributes = [fM attributesOfItemAtPath:directory error:NULL]; 

// Check if it's a directory 
if ([fileAttributes objectForKey:NSFileType] == NSFileTypeDirectory) { 
    // Get contents of directory 
    NSArray *insideDirectory = [fM contentsOfDirectoryAtPath:directory error:NULL]; 

    cell.folderImageView.image = nil; 
    // Loop through folder contents 
    for (NSString *file in insideDirectory) { 
     if ([[[file pathExtension] uppercaseString] isEqualToString:@"PNG"]) { 
      NSString *imagePath = [directory stringByAppendingPathComponent:file]; 
      UIImage *image = [UIImage imageWithContentsOfFile:imagePath]; 
      cell.imageView.image = image; 
      break; 
     } 
    } 
} 

return cell; 
}