2014-03-05 43 views
0

我是iOS開發新手,我在一個簡單的頁面視圖控制器照片庫中顯示圖像時出現了一些問題。ISO:圖像沒有出現在頁面視圖控制器應用程序

我遇到的問題是,子視圖中的圖像不會顯示。唯一顯示的是空白頁面。

這裏是視圖控制器文件來保存頁面視圖控制器:

#import "RTPGalleryViewController.h" 
#import "RTPSinglePhotoViewController.h" 
#import "JMImageCache.h" 
@interface RTPGalleryViewController() 

@end 

@implementation RTPGalleryViewController 

@synthesize photosArray, pageViewController, pagesArray; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
    { 
     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
     if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    pagesArray = [[NSMutableArray alloc] init]; 

    [self generatePhotoViews]; 

    self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil]; 
    self.pageViewController.dataSource = self; 
    [[self.pageViewController view] setFrame:[[self view] bounds]]; 

    RTPSinglePhotoViewController *initialViewController = [pagesArray objectAtIndex:0]; 

    NSArray *viewControllers = [NSArray arrayWithObject:initialViewController]; 

    [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]; 

    self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 30); 

    [self addChildViewController:self.pageViewController]; 
    [[self view] addSubview:[self.pageViewController view]]; 
    [self.pageViewController didMoveToParentViewController:self]; 
// Do any additional setup after loading the view. 
} 

-(void) initWithPhotoArray:(NSMutableArray *) photos{ 
    self.photosArray = photos; 
} 

-(void) generatePhotoViews{ 
    for (int i=0; i< [photosArray count]; i++) { 
    RTPSinglePhotoViewController *view = [[RTPSinglePhotoViewController alloc] init] ; 
    view.imageUrl = [photosArray objectAtIndex:i]; 
    view.pageIndex = i; 
    [pagesArray addObject:view]; 
    } 
} 


- (RTPSinglePhotoViewController *)viewControllerAtIndex:(NSUInteger)index 
{ 
NSLog(@"PHOTO ARRAY COUNT IS: %lu", (unsigned long)[photosArray count]); 
if ([self.pagesArray count] == 0) { 
    return nil; 
} 

return [pagesArray objectAtIndex:index]; 
; 
} 

#pragma mark - Page View Controller Data Source 
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController 
{ 
NSUInteger index = ((RTPSinglePhotoViewController*) viewController).pageIndex; 

if ((index == 0) || (index == NSNotFound)) { 
    return nil; 
} 
NSLog(@"THE INDEX NOW IS %lu",(unsigned long)index); 
index--; 
return [self viewControllerAtIndex:index]; 
} 

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 
{ 
NSUInteger index = ((RTPSinglePhotoViewController*) viewController).pageIndex; 

if (index == ([pagesArray count]-1) || index == NSNotFound) { 
    return nil; 
} 
NSLog(@"THE INDEX NOW IS %lu",(unsigned long)index); 
index++; 

return [self viewControllerAtIndex:index]; 
} 

- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController 
{ 
    return [self.photosArray count]; 
} 

- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController 
{ 
return 0; 
} 
@end 

RTPSinglePhotoViewController是這裏保存圖像的內容視圖控制器代碼:

#import "RTPSinglePhotoViewController.h" 
#import "JMImageCache.h" 

@interface RTPSinglePhotoViewController() 

@end 

@implementation RTPSinglePhotoViewController 
@synthesize imageView,imageUrl; 
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    NSString * path = imageUrl; 

    NSURL * url = [NSURL URLWithString:path]; 

// [cell.thumbnailImageView setImageWithURL:url key:nil placeholder:nil completionBlock:nil failureBlock:nil]; 

    [[JMImageCache sharedCache] imageForURL:url completionBlock:^(UIImage *downloadedImage)  { 
     imageView.image = downloadedImage; 
    } failureBlock:nil]; 
    // Do any additional setup after loading the view. 
} 

@end 

現在,根據日誌中,圖像正在下載/緩存正確,它只是沒有顯示出來。看到一張空白頁而不是照片。我究竟做錯了什麼?

任何建議,將不勝感激!

回答

1

我想你不使用故事板。

你分配視圖控制器的方法是:

RTPSinglePhotoViewController *view = [[RTPSinglePhotoViewController alloc] init] ; 

,它應該是:

RTPSinglePhotoViewController *view = [[RTPSinglePhotoViewController alloc] initWithNibName:@"The name of the xib associated with this controller" bundle: [NSBundle mainBundle]]; 

的問題是,你不關聯的任何視圖到視圖控制器,因此沒有什麼是顯示

編輯:由於您使用故事板實例化視圖控制器的正確方法是:

RTPSinglePhotoViewController *view = (RTPSinglePhotoViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"your_controllers_storyboard_id"]; 
+0

謝謝你的回答,但是,我正在使用故事板。子控制器與故事板中的viewController相連。 :( –

+0

是的,這工作!!非常感謝。我認爲連接控制器和視圖在IB會自動做的伎倆,並不需要用storybaordID初始化。 –

相關問題