如何使用新视图替换页面视图控制器中的图片?

时间:2014-03-04 18:51:04

标签: ios uipageviewcontroller

目前我有这个代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Create the data model
    _pageTitles = @[@"Over 200 Tips and Tricks", @"Discover Hidden Features", @"Bookmark          Favorite Tip", @"Free Regular Update"];
    _pageImages = @[@"page1.png", @"page2.png", @"page3.png", @"page4.png"];

    // Create page view controller
    self.pageViewController = [self.storyboard   instantiateViewControllerWithIdentifier:@"PageViewController"];
    self.pageViewController.dataSource = self;

    PageContentViewController *startingViewController = [self viewControllerAtIndex:0];
    NSArray *viewControllers = @[startingViewController];
    [self.pageViewController setViewControllers:viewControllers  direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

    // Change the size of page view controller
    self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 30);

    [self addChildViewController:_pageViewController];
    [self.view addSubview:_pageViewController.view];
    [self.pageViewController didMoveToParentViewController:self];

}

这使用了我的支持文件中的4张图片!但是我需要这个函数来读取一个新场景 - 换句话说,我如何编程来替换图像“example:page1.png”以获得“View Controller Scene!?

1 个答案:

答案 0 :(得分:0)

这是一个很好的教程How To Create UIPageViewController Using Storyboard。您基本上需要更改数据源和/或修改viewControllerAtIndex:方法。

如果您只是想要更改图像,只需将自己的图像添加到目标(将它们拖入Xcode导航器或文件 - >添加文件),可能会将复制图像复制到项目文件夹中,然后进行调整数组中图像的名称。

如果您将图像添加到Xcode 5中的图像资源(它们必须是PNG),方法是将它们拖动到图像资源屏幕,然后您可以省略文件扩展名.png,只需参考图像资源中的图像名称即可。您还应该通过将图像移动到正确的位置(1x或2x)来调整图像是视网膜还是非视网膜。

要为最后一页(索引3)返回不同的VC,您可以执行以下操作:

- (UIViewController *)viewControllerAtIndex:(NSUInteger)index
{
    if (([self.pageTitles count] == 0) || (index >= [self.pageTitles count])) {
        return nil;
    }

    // Create a new view controller and pass suitable data.        
    if (index == 3) {

        SomeSpecialContentViewController *someSpecialContentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"SomeSpecialContentViewController"];

        // configure outlets of this VC
        // ...

        return someSpecialContentViewController;

    } else {

        PageContentViewController *pageContentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageContentViewController"];

        // configure outlets of this VC
        // ...

        return pageContentViewController;
    }
}