Ich erstellte in Storyboard UITableView
mit Prototyp Zelle, TableViewController und UITableViewCell
. Jetzt möchte ich alle Bilder aus der Telefongalerie auswählen und eine oder mehrere in der Datenbank speichern. Aber in diesem Moment muss ich das Hinzufügen von Bildern zur Tabellenansicht implementieren. Ich bin Anfänger in iOS. Kann mir jemand sagen, wie das geht? Gib mir einen Link oder Code? Vielen Dank für den FortschrittWie Bilder zu UITableView von Telefon Galerie hinzufügen
Antwort
Sie können ALAssetsLibrary
in AssetsLibrary framework
verwenden, um alle Bilder aus der Telefongalerie zu holen. Speichern Sie alle Bilder in einem Array.
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
void (^assetEnumerator)(ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
if(result != nil) {
if([[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto]) {
NSURL *url= (NSURL*) [[result defaultRepresentation] url];
[library assetForURL:url
resultBlock:^(ALAsset *asset) {
UIImage *img = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullScreenImage]];
[imgArray addbject:img];
}
failureBlock:^(NSError *error){ NSLog(@"operation failed"); } ];
}
}
};
Dann können Sie dieses Array zum Speichern in DB oder zum Anzeigen in Tabellenansicht verwenden. Für die Verwendung in TableView müssen Sie in Ihrer Prototyp-Zelle UIImageView
hinzufügen und dann die Bilder aus dem Array auf die Zelle entsprechend einstellen. Ihre Delegiertenmethoden für Tabellenansichten sind wie folgt.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [imgArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
CellId = @"ImageCell";
CustomTableViewCell *cell = (CustomTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellId];
if (cell == nil) {
cell = [[CustomTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellId];
}
UIImage *img = [imgArray objectAtIndex:indexPath.row];
cell.imgView.image = img;
return cell;
}
Wenn Sie das Bild aus der Galerie auswählen möchten und teilen Sie Ihre Tableview, können Sie benutzerdefinierte Image in Tableview oder CustomCell Imageview verwenden
Zuerst Sie das Bild aus der Galerie auswählen müssen und es zu Array speichern
Davor zuzuteilen und initialisieren das Array in viewDidLoad Methode
ViewController.m
#import "ViewController.h"
@interface ViewController()
{
NSMutableArray *arrayImage;
}
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
arrayImage = [[NSMutableArray alloc]init];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *image=[info objectForKey:@"UIImagePickerControllerOriginalImage"];
imageView.image=image;
[arrayImage addObject:image];
picker.delegate =self;
[picker dismissViewControllerAnimated:YES completion:nil];
}
Dann in Tableview
Wenn Sie
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomTableViewCell *cell = (CustomTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"cell"];
if(cell==nil)
{
NSArray *nib = [[NSBundle mainBundle]loadNibNamed:@"CustomTableViewCell" owner:self options:nil];
cell = nib[0];
}
cell.galleryImageView.image = [arrayImage objectAtIndex:indexPath.row];
return cell;
}
CustomCell Wenn Sie die Standardtabellenansicht Zelle verwenden
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *strCell = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:strCell];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:strCell];
}
cell.imageView.image = [arrayImage objectAtIndex:indexPath.row];
return cell;
}
versuchen diese http://stackoverflow.com/questions/12633843/get-all -of-the-images-from-aphone-photolibrary-in-a-array-using-acestslibr – sanjeet
kenzolek meine antwort überprüfen – user3182143
Ist meine Antwort hilfreich für Sie? – user3182143