2011-10-04 8 views
5

Sto sviluppando questa applicazione su un iPad.Visualizzazione di foto da NSDocumentDirectory

Questi codici per un pulsante "Sfoglia" consentono all'utente di visualizzare le foto dalla galleria dell'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]; 
} 

Quando una foto viene selezionata, verrà archiviata nell'applicazione utilizzando 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]; 
} 

Ora devo includere un pulsante "Visualizza" nella prima schermata. Toccando sul pulsante, verrà mostrata una nuova vista (controller di visualizzazione modale) e verranno visualizzate tutte le foto in miniature/vista tabella da NSDocumentDirectory.

Quando una foto è selezionata, verrà eliminata da NSDocumentDirectory.

Come posso fare questo?

+0

Qualcuno mi aiuti per favore! – Lloydworth

risposta

2

Prima di tutto, durante la memorizzazione dell'immagine nella cartella Documenti, provare ad archiviarli con una convenzione di denominazione come mantenere una variabile contatore e assegnare i nomi delle immagini in base ad essa. Qualche cosa come questa:

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

Ora, una volta che hai tutte le immagini memorizzate nella cartella documenti e che desiderano ottenere tutti loro è possibile ottenere li scrivendo questo codice:

-(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 volta' ve ha ottenuto tutte le immagini è possibile visualizzare come miniature e poi quando si desidera cancellare un'immagine utilizzare questo metodo:

-(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; 
} 

Spero che questo ti aiuta.

Per compilare la tabella con l'immagine è necessaria una cella personalizzata. Puoi consultare un tutorial di Apple chiamato AdvancedTableViewCells. Ti mostrerà come puoi popolare il tuo tavolo con le immagini. Hanno una miniatura principale in ogni riga. Devi personalizzarlo e renderlo 3 o 4 miniature secondo le tue esigenze. Oltre a questo rimuovi tutto da quella cella personalizzata.

+0

Grazie! Ma hai idea di come visualizzare la matrice di immagini in una nuova vista con le miniature? – Lloydworth

+0

Prendi un tavolo. Rende la sua cella personalizzata contenente 3 o 4 immagini in una riga qualunque sia conveniente per te. Riempi le immagini dalla serie di immagini che abbiamo e avrai tutte le immagini visualizzate. Avresti anche bisogno di un pulsante per ogni immagine (una piccola croce nell'angolo in alto a destra di ogni immagine) nella cella personalizzata per eliminare l'immagine. –

+0

Non importa dare un esempio su come popolare la tabella con l'array? – Lloydworth