繁体   English   中英

在故事板中使用UIPageViewController

[英]using the UIPageViewController in a storyboard

我希望将UIPageViewController与Xcode的故事板一起使用。 我能找到的唯一例子就是如何使用单独的xib文件实现UIPageViewcontroller 教程

但是在本教程中, UIPageViewController以编程方式在扩展UIViewController的类中实例化。 这使得转换为故事板如何解释UIPageViewcontroller (它本身就是一个实例)变得复杂。

任何有关如何使用Xcode的故事板创建一个正常运行的UIPageViewController帮助将非常感激。

更新:我设法通过使用默认的pagecontroller模板在Xcode中创建一个新项目来解决此问题。 它使用故事板,很容易遵循。

更新:我设法通过使用默认的pagecontroller模板在xcode中创建一个新项目来解决此问题。 它使用故事板,很容易遵循。

将Xcode项目设置为PageViewController是实现此目的的一种方法,但是如果您想在已有的故事板中包含PageViewController,也可以执行此操作。

如果将PageViewController场景拖放到故事板上并连接一个segue,则可以推送到该PageViewController。 但是,故事板中似乎存在一些错误,可以正确设置PageViewController,例如,您无法连接委托和数据源。

一个简单的方法是简单地在init方法中连接委托/数据源:

- (instancetype) initWithCoder:(NSCoder *)aDecoder
{
    if(self = [super initWithCoder:aDecoder])
    {
        self.delegate = self;
        self.dataSource = self;
    }
    return self;
}

这将导致您的委托和数据源方法被正确调用,假设您当然希望数据源和委托是PageViewController。 设置完成后,您需要确保在加载视图时有一个视图控制器。 您可以使用viewDidLoad中的PageViewController类上的setViewControllers方法执行此操作:

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self setViewControllers:@[sweetViewController] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:^(BOOL finished) {
        NSLog(@"Hooray I set my initial viewcontroller for my page view controller");
    }];
}

创建PageViewController时,它将从您的sweetViewController开始,然后根据需要开始调用您的数据源并委托方法。

使用Xcode 7可以轻松实现此目的。将ViewController作为您的数据源并在一个Storyboard场景中委托,并将UIPageViewController嵌入到ContainerView中。 然后在ViewController的prepareForSegue方法中捕获UIPageViewController。

例如在Swift:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if let identifier = segue.identifier where identifier == "yourPageVCIdentifier"{
        if let pageController = segue.destinationViewController as? UIPageViewController {
            pageController.dataSource = self
            pageController.delegate = self
            self.pageVC = pageController
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM