2011-11-18 94 views
0

这里是我的代码Roorviewcontrller.hiPhone图像库:只显示一个图像多次

@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路径中只显示一个图像,因为许多图像都是相同的图像。如何显示使用此代码自定义的所有图像。任何人都可以提前帮助我。

+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];” –

相关问题