2011-11-18 2 views
0

가 여기 내 코드 Roorviewcontrller.h아이폰 이미지 갤러리 : 하나의 이미지를 여러 번

@class PhotoDataSource; 
@interface RootViewController : KTThumbsViewController 
{ 
    PhotoDataSource *data_; 
} 
@end 

Rootviewcontrollr.m 파일

@implementation RootViewController 
- (void)dealloc 
{ 
    [data_ release], data_ = nil; 
    [super dealloc]; 
} 

- (PhotoDataSource *)data 
{ 
    if (data_) { 
     return data_; 
    } 

    data_ = [[PhotoDataSource alloc] init]; 
    return data_; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

[self setDataSource:[self data]]; 
    [self setTitle:[NSString stringWithFormat:@"%i Photos", [data_ numberOfPhotos]]]; 

    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Back", @"Back button title") style:UIBarButtonItemStylePlain target:nil action:nil]; 
    [[self navigationItem] setBackBarButtonItem:backButton]; 
[backButton release]; 
} 

.H 파일

@interface PhotoDataSource : NSObject <KTPhotoBrowserDataSource> 
{ 
NSMutableArray *data_; 
sqlite3 *UsersDB; 
NSString *databasePath; 
NSString *coun; 
NSMutableArray *sa; 
NSString *fullPathToFile; 
} 
@property (nonatomic, assign) NSString *coun; 
@end 

하는 .m 보여줍니다 파일

@implementation PhotoDataSource 

- (void)dealloc 
{ 
[data_ release], data_ = nil; 
[super dealloc]; 
} 

- (id)init 
{ 
self = [super init]; 
if (self) 
{ 
    NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString* documentsDirectory = [paths objectAtIndex:0]; 

sqlite3_stmt *statement; 
NSString *docsDir; 
NSArray *dirPaths; 
sa = [[NSMutableArray alloc] init]; 
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

    docsDir = [dirPaths objectAtIndex:0]; 

    databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent: @"Aapke.db"]]; 
NSLog(@"%@",databasePath); 
const char *dbpath = [databasePath UTF8String]; 
    if (sqlite3_open(dbpath, &UsersDB) == SQLITE_OK) 
{ 
    NSString *querySQL = [NSString stringWithFormat: @"SELECT ImagePath FROM AssetImage",nil]; 

    const char *query_stmt = [querySQL UTF8String]; 

    if (sqlite3_prepare_v2(UsersDB, query_stmt, -1, &statement, NULL) == SQLITE_OK) 
    { 

     while (sqlite3_step(statement) == SQLITE_ROW) 
     { 
      NSLog(@"select"); 
      coun=[[NSString alloc] initWithUTF8String:(char *)sqlite3_column_text(statement, 0)]; 
      NSLog(@"Coun = %@",coun); 
      fullPathToFile = [documentsDirectory stringByAppendingPathComponent:coun]; 
      NSString *imageName1 = [NSString stringWithFormat:@"%@",fullPathToFile]; 

      NSLog(@"fullpathfile= %@",fullPathToFile); 

      NSLog(@"Image Name1=%@", imageName1); 
      [sa addObject:fullPathToFile]; 

      data_ = [[NSMutableArray alloc] init]; 
      NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:[UIImage imageWithContentsOfFile:imageName1], @"thumbnail", [UIImage imageWithContentsOfFile:imageName1], @"fullsize", nil]; 
      [data_ addObject:dict]; 
      NSLog(@"dict = %@",dict); 
     } 
     sqlite3_finalize(statement); 
    } 
} 
NSLog(@"SA=%@",sa); 
} 
return self; 
} 

- (NSInteger)numberOfPhotos 
{ 
NSInteger count = [sa count]; 
[data_ count]; 
return count; 
} 

- (UIImage *)imageAtIndex:(NSInteger)index 
{ 
NSDictionary *dict = [data_ objectAtIndex:0]; 
UIImage *image = [dict objectForKey:@"fullsize"]; 
return image; 
} 

- (UIImage *)thumbImageAtIndex:(NSInteger)index 
{ 
NSDictionary *dict = [data_ objectAtIndex:0]; 
UIImage *image = [dict objectForKey:@"thumbnail"]; 
return image; 
} 
@end 

이 코드를 실행하고 성공적으로 실행했습니다. 그러나 단일 이미지를 보여줍니다. 아이폰 SDK 경로에 여러 이미지를 저장했습니다. 모든 이미지가 표시되지 않았습니다. 나는 모든 이미지를 보여주고 싶다. 그러나이 코드는 db 경로에서 하나의 이미지 만 같은 이미지만큼 많은 이미지 만 표시합니다. 이 코드를 사용하여 모든 이미지를 표시하는 방법. 아무도 pls 덕분에 사전에 감사합니다.

+0

제대로 작동하지 줘야 해. 여러 번에 하나의 이미지 만 표시합니다. –

답변

0

imageAtIndex:thumbImageAtIndex:에서 무엇을하고 있는지 자세히 살펴보고 objectAtIndex:0이라고 부르는 것이므로 어디에서나 처음 사용되는 이미지 만 보입니다. 두 경우 모두 대신 objectAtIndex:index을 사용하십시오. 즉

, 그 두 가지 방법으로 읽어야

- (UIImage *)imageAtIndex:(NSInteger)index 
{ 
    NSDictionary *dict = [data_ objectAtIndex:index]; // using index here 
    UIImage *image = [dict objectForKey:@"fullsize"]; 
    return image; 
} 

- (UIImage *)thumbImageAtIndex:(NSInteger)index 
{ 
    NSDictionary *dict = [data_ objectAtIndex:index]; // using index here 
    UIImage *image = [dict objectForKey:@"thumbnail"]; 
    return image; 
} 
+0

답장을 보내 주셔서 감사합니다. 나는 이것을 시도했다. 이 줄의 콘솔 오류 "NSDictionary * dict = [data_ objectAtIndex : index];" –