views:

273

answers:

2

I have a UIImage that I want to display with TTPhotoViewController, but TTPhotoViewController does not take a UIImage as an argument. It does take a TTPhoto as an argument, so I'm wondering if there is a way to convert a UIImage to a TTPhoto or if there is any other way to get the TTPhotoViewController to display my UIImage other than setting the defaultImage, which didn't work too good.

+1  A: 

You need to create an object that conforms to the TTPhotoSource protocol, implementing the required methods. Then you need to populate that data source with objects that conform to the TTPhoto protocol.

You should then be able to set the photo source property on the TTPhotoViewController and Three20's magic should work.

In my own experience I've only used this framework with URLs to images and downloading them using Three20's TTModel framework. I'm not entirely sure how this affects loading images locally.

Jasarien
I kind of added Three20 to the project because I wanted a nice PhotoViewer. All the images are stored locally. Also I just want to display one image, at least for now.
Erik B
You can't really escape Three20's way of doing things. It's just the way its written. If you want to use the photo viewer, you have to create a photo source and populate it. If you want to just show a few images in a scroll view I'd suggest looking into the UIScrollView documentation and sample apps and cooking up your own simpler photo browser. Three20 as a whole is quite a monster, and besides its ongoing refactor, it's still quite difficult to get to grips with.
Jasarien
+3  A: 

I use a little hack to do it:

NSString *url = [[TTURLCache sharedCache] createUniqueTemporaryURL];    
[[TTURLCache sharedCache] storeImage:baseImage forURL:url force:YES];

PEPhotoViewController *album=[[[PEPhotoViewController alloc] initWithImageURL:url] autorelease];
elife
I have to try this before I can accept it as my answer, but it looks like a nice hack.
Erik B