gpt4 book ai didi

ios - ISO : Images not showing up in a page view controller app

转载 作者:行者123 更新时间:2023-11-29 03:11:35 25 4
gpt4 key购买 nike

我是 iOS 开发新手,在简单的页面 View Controller 照片库中显示图像时遇到一些问题。

我遇到的问题是 subview 中的图像不会显示。唯一显示的是一个空白页。

这是保存页面 View Controller 的 View Controller 文件:

#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 是保存图像的内容 View Controller ,这里是代码:

#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

现在,根据日志,图像正在正确下载/缓存,只是没有显示。看到的是空白页而不是照片。我究竟做错了什么?

如有任何建议,我们将不胜感激!

最佳答案

我想你没有使用 Storyboard。

分配 View Controller 的方式是:

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

它应该在哪里:

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

问题是您没有将任何 View 关联到您的 View Controller ,因此没有显示任何内容

编辑:由于您使用的是 Storyboard,因此实例化 View Controller 的正确方法是:

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

关于ios - ISO : Images not showing up in a page view controller app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22191128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com