2013-07-25 70 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; 
}