Here is my code Roorviewcontrller.h
@class PhotoDataSource;
@interface RootViewController : KTThumbsViewController
{
PhotoDataSource *data_;
}
@end
Rootviewcontrollr.m file
@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 file
@interface PhotoDataSource : NSObject <KTPhotoBrowserDataSource>
{
NSMutableArray *data_;
sqlite3 *UsersDB;
NSString *databasePath;
NSString *coun;
NSMutableArray *sa;
NSString *fullPathToFile;
}
@property (nonatomic, assign) NSString *coun;
@end
.m file
@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
I executed this code and run succesfully. But it shows single images. I stored multiple image in a iphone sdk path. it not shown all images. I want to show all images. But this code only shows only one image from db path as many images as same image. How to show all images customize using this code. Anybody pls help me thanks in Advance.
Take a close look at what you’re doing in
imageAtIndex:andthumbImageAtIndex:– you’re callingobjectAtIndex:0, hence you will see only the first image used everywhere. Instead useobjectAtIndex:indexin both cases.In other words, those two methods should read as: