2011-10-04 14 views
5

Estoy desarrollando esta aplicación en un iPad.Mostrando fotos de NSDocumentDirectory

Estos códigos para el botón 'Examinar' permiten al usuario ver las fotos desde la galería del iPad.

- (IBAction) BrowsePhoto:(id)sender 
{ 
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; 
imagePickerController.delegate = self; 
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:imagePickerController]; 
[popover setPopoverContentSize:CGSizeMake(320,320)]; 
[popover presentPopoverFromRect:CGRectMake(200,200,-100,-100) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
self.popoverController = popover; 
[imagePickerController release]; 
} 

Cuando se selecciona una fotografía, se almacenará en la aplicación usando NSDocumentDirectory.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)selectedImage editingInfo:(NSDictionary *)editingInfo 
{ 
[self.popoverController dismissPopoverAnimated:YES]; 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDir = [paths objectAtIndex:0]; 
NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:@"SavedImage.png"]; 
UIImage *image = imageView.image; 
NSData *imageData = UIImagePNGRepresentation(image); 
[imageData writeToFile:savedImagePath atomically:NO]; 
} 

Ahora tengo que incluir un botón 'Pantalla' en la primera pantalla. Al tocar el botón, se mostrará una nueva vista (controlador de vista modal) y se mostrarán todas las fotos en miniaturas/tabla vista desde NSDocumentDirectory.

Cuando se selecciona una fotografía, se eliminará de NSDocumentDirectory.

¿Cómo puedo hacer esto?

+0

Alguien me ayuda por favor! – Lloydworth

Respuesta

2

En primer lugar, al almacenar la imagen en la carpeta Documentos, intente almacenarlos con una convención de nomenclatura como mantener una variable de contador y dar los nombres de sus imágenes de acuerdo con ella. Algo como esto:

NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"%d.png", counter]]; 

Ahora, una vez que haya todas las imágenes almacenadas en la carpeta de documentos y desea obtener todos ellos se puede conseguir escribiendo este código:

-(NSMutableArray *)GetImage:(NSMutableArray *)arrayImgNames 
{ 
     NSMutableArray *tempArray; 
      for(int i=0;i<[arrayImgNames count]; i++) 
    { 
     NSArray *paths1 = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 
     NSString *documentsDirectory = [paths1 objectAtIndex:0]; 
     NSString *filePath = [documentsDirectory stringByAppendingPathComponent: [arrayImgNames objectAtIndex:i]]; 
     [tempArray addObject:[[UIImage alloc] initWithContentsOfFile:filePath]]; 
     return tempArray; 
    } 
} 

Una vez que' hemos conseguido todas las imágenes se pueden mostrar como miniaturas y luego cuando se desea eliminar una imagen utilizar este método:

-(int)removeImage:(NSString*)FileName1 
{ 
    NSFileManager *filemanager=[NSFileManager defaultManager]; 
    NSArray *path1=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); 
    NSString *documentdirectory = [path1 objectAtIndex:0]; 
    NSString *filepath=[documentdirectory stringByAppendingPathComponent:FileName1]; 
    if([filemanager fileExistsAtPath:filepath]==TRUE) 
    { 
     [filemanager removeItemAtPath:filepath error:nil]; 
    } 
    return 0; 
} 

espero que esto le ayuda.

Para rellenar la tabla con la imagen, necesitará una celda personalizada. Puede consultar un tutorial de Apple llamado AdvancedTableViewCells. Le mostrará cómo puede completar su tabla con imágenes. Tienen una miniatura principal en cada fila. Tienes que personalizarlo y convertirlo en 3 o 4 miniaturas según tu requerimiento. Aparte de eso, elimine todo de esa celda personalizada.

+0

Gracias! Pero, ¿tiene alguna idea de cómo mostrar la matriz de imágenes en una nueva vista con miniaturas? – Lloydworth

+0

Toma una tabla. Hace que su celda personalizada contenga 3 de 4 imágenes en una fila, lo que sea conveniente para usted. Complete las imágenes de la matriz de imágenes que tenemos y tendrá todas las imágenes mostradas. También necesitaría un botón para cada imagen (una pequeña cruz en la esquina superior derecha de cada imagen) en la celda personalizada para eliminar la imagen. –

+0

¿No te importa dar un ejemplo sobre cómo llenar la tabla con la matriz? – Lloydworth