Three20 TTPhotoViewController не отображает фотографии - PullRequest
0 голосов
/ 18 февраля 2011

Я просмотрел несколько учебных пособий, включая пример приложения, включенного в Three20, и не могу понять, почему фотографии не отображаются в моем TTPhotoViewController.На самом деле мне довольно сложно отлаживать.Ниже приведен код, который у меня есть.Любые мысли о том, почему изображения не будут загружаться и как их отлаживать, было бы здорово.Я получаю полностью черный вид между моей нижней панелью вкладок и верхней панелью навигации.Я также вижу стрелки влево и вправо, наложенные на черный вид, который, по-видимому, предназначен для навигации по фотографиям, хотя я думал, что он должен был отображать галерею миниатюр.

// A TTPhoto class 
// Photo.h 
#import <Foundation/Foundation.h> 
#import <Three20/Three20.h> 
@interface Photo : NSObject <TTPhoto> { 
    NSString *_caption; 
    NSString *_urlLarge; 
    NSString *_urlSmall; 
    NSString *_urlThumb; 
    id <TTPhotoSource> _photoSource; 
    CGSize _size; 
    NSInteger _index; 
} 

@property (nonatomic, copy) NSString *caption; 
@property (nonatomic, copy) NSString *urlLarge; 
@property (nonatomic, copy) NSString *urlSmall; 
@property (nonatomic, copy) NSString *urlThumb; 
@property (nonatomic, assign) id <TTPhotoSource> photoSource; 
@property (nonatomic) CGSize size; 
@property (nonatomic) NSInteger index; 
- (id)initWithCaption:(NSString *)caption urlLarge:(NSString 
*)urlLarge urlSmall:(NSString *)urlSmall urlThumb:(NSString *)urlThumb 
size:(CGSize)size; 
@end 

// Photo.m 
#import "Photo.h" 
@implementation Photo 
@synthesize caption = _caption; 
@synthesize urlLarge = _urlLarge; 
@synthesize urlSmall = _urlSmall; 
@synthesize urlThumb = _urlThumb; 
@synthesize photoSource = _photoSource; 
@synthesize size = _size; 
@synthesize index = _index; 
- (id)initWithCaption:(NSString *)caption urlLarge:(NSString 
*)urlLarge urlSmall:(NSString *)urlSmall urlThumb:(NSString *)urlThumb 
size:(CGSize)size { 
    if ((self = [super init])) { 
        self.caption = caption; 
        self.urlLarge = urlLarge; 
        self.urlSmall = urlSmall; 
        self.urlThumb = urlThumb; 
        self.size = size; 
        self.index = NSIntegerMax; 
        self.photoSource = nil; 
    } 
    return self; 
} 

- (void) dealloc { 
    self.caption = nil; 
    self.urlLarge = nil; 
    self.urlSmall = nil; 
    self.urlThumb = nil; 
    [super dealloc]; 
} 

#pragma mark TTPhoto 
- (NSString*)URLForVersion:(TTPhotoVersion)version { 
    switch (version) { 
        case TTPhotoVersionLarge: 
            return _urlLarge; 
        case TTPhotoVersionMedium: 
            return _urlLarge; 
        case TTPhotoVersionSmall: 
            return _urlSmall; 
        case TTPhotoVersionThumbnail: 
            return _urlThumb; 
        default: 
            return nil; 
    } 
} 

@end 

// A TTPhotoSource class 
// PhotoSet.h 
#import <Foundation/Foundation.h> 
#import "Three20/Three20.h" 
@interface PhotoSet : TTURLRequestModel <TTPhotoSource> { 
    NSString *_title; 
    NSArray *_photos; 
        NSArray* _tempPhotos; 
        NSTimer* _fakeLoadTimer; 
} 

@property (nonatomic, copy) NSString *title; 
@property (nonatomic, retain) NSArray *photos; 
- (id) init; 
@end 

// PhotoSet.m 
#import "PhotoSet.h" 
#import "Photo.h" 
@implementation PhotoSet 
@synthesize title = _title; 
@synthesize photos = _photos; 
- (id) init { 
        _title = @"Test photo album"; 
        _photos = [[NSArray alloc] initWithObjects: 
                           [[[Photo alloc] initWithCaption:@"coming soon" 
                                                                          urlLarge:@"http://farm5.static.flickr.com/ 
4066/4653156849_0905e6b58e_o.jpg" 
                                                                          urlSmall:@"http://farm5.static.flickr.com/ 
4066/4653156849_0d15f0e3f0_s.jpg" 
                                                                          urlThumb:@"http://farm5.static.flickr.com/ 
4066/4653156849_0d15f0e3f0_s.jpg" 
                                                                                  size:CGSizeMake(220, 112)] autorelease], 
                           [[[Photo alloc] initWithCaption:@"coming soon 2" 
                                                                          urlLarge:@"http://farm5.static.flickr.com/ 
4023/4653774402_05e6acd995_o.jpg" 
                                                                          urlSmall:@"http://farm5.static.flickr.com/ 
4009/4653157237_c2f5f59e0d_s.jpg" 
                                                                          urlThumb:@"http://farm5.static.flickr.com/ 
4009/4653157237_c2f5f59e0d_s.jpg" 
                                                                                  size:CGSizeMake(220, 112)] autorelease], 
                           [[[Photo alloc] initWithCaption:@"coming soon 2" 
                                                                          urlLarge:@"http://farm5.static.flickr.com/ 
4023/4653774402_05e6acd995_o.jpg" 
                                                                          urlSmall:@"http://farm5.static.flickr.com/ 
4009/4653157237_c2f5f59e0d_s.jpg" 
                                                                          urlThumb:@"http://farm5.static.flickr.com/ 
4009/4653157237_c2f5f59e0d_s.jpg" 
                                                                                  size:CGSizeMake(220, 112)] autorelease], 
                           [[[Photo alloc] initWithCaption:@"coming soon 2" 
                                                                          urlLarge:@"http://farm5.static.flickr.com/ 
4023/4653774402_05e6acd995_o.jpg" 
                                                                          urlSmall:@"http://farm5.static.flickr.com/ 
4009/4653157237_c2f5f59e0d_s.jpg" 
                                                                          urlThumb:@"http://farm5.static.flickr.com/ 
4009/4653157237_c2f5f59e0d_s.jpg" 
                                                                                  size:CGSizeMake(220, 112)] autorelease], 
                           nil]; 
        for (int i = 0; i < _photos.count; ++i) { 
                id<TTPhoto> photo = [_photos objectAtIndex:i]; 
                if ((NSNull*)photo != [NSNull null]) { 
                        NSLog(@"in here 65434"); 
                        photo.photoSource = self; 
                        photo.index = i; 
                } 
    } 
    return self; 
} 

- (void) dealloc { 
    self.title = nil; 
    self.photos = nil; 
    [super dealloc]; 
} 

#pragma mark TTModel 
- (BOOL)isLoading { 
        return NO; 
} 

- (BOOL)isLoaded { 
    return YES; 
} 

#pragma mark TTPhotoSource 
- (NSInteger)numberOfPhotos { 
    return _photos.count; 
} 

- (NSInteger)maxPhotoIndex { 
    return _photos.count-1; 
} 

- (id<TTPhoto>)photoAtIndex:(NSInteger)photoIndex { 
    if (photoIndex < _photos.count) { 
        return [_photos objectAtIndex:photoIndex]; 
    } else { 
        return nil; 
    } 
} 

@end 

// A TTPhotoViewController 
// EventDetailViewController.h 
#import <UIKit/UIKit.h> 
#import <Foundation/Foundation.h> 
#import <Three20/Three20.h> 
#import "PhotoSet.h" 
@class Event; 
@interface EventDetailViewController : 
TTPhotoViewController<UINavigationControllerDelegate, 
UIImagePickerControllerDelegate> { 
        NSArray *photos; 
        Event *event; 
        PhotoSet *_photoSet; 
} 

@property (nonatomic, retain) NSArray *photos; 
@property (nonatomic, retain) Event *event; 
@property (nonatomic, retain) PhotoSet *photoSet; 
- (id)initWithEvent:(Event *)e; 

// EventDetailViewController.m 
#import "EventDetailViewController.h" 
#import "Event.h" 
#import "PhotoSet.h" 
#import "Photo.h" 
@implementation EventDetailViewController 
@synthesize photos; 
@synthesize event; 
@synthesize photoSet = _photoSet; 
#pragma mark - 
#pragma mark Initialization 
- (void)viewDidLoad { 
        self.photoSet = [[PhotoSet alloc] init]; 
        self.photoSource = self.photoSet; 
} 

- (id)initWithEvent:(Event *)e { 
    if (self) { 
        self.event = e; 
    } 
    return self; 
} 

@end

1 Ответ

1 голос
/ 18 апреля 2011

Ответ вы можете найти здесь: http://www.raywenderlich.com/1430/how-to-use-the-three20-photo-viewer

...