2011-11-18 10 views
0

がここに私のコードRoorviewcontrller.hiPhoneの画像ギャラリーは、1つだけの画像を複数回

@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 

私はこのコードを実行し、正常に実行しました。しかし、それは単一の画像を示す。私はiPhoneのSDKのパスに複数の画像を格納しました。すべての画像が表示されていません。私はすべての画像を表示したい。しかし、このコードは、dbパスからの1つの画像だけを、同じ画像と同じくらいたくさん表示します。このコードを使用してすべての画像を表示する方法。誰でもplsはアドバンスで感謝を助けます。

+0

それが正常に動作しないウィル。複数回に1枚の画像しか表示しない –

答えて

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];" –

関連する問題