我希望在Xcode的故事板中使用UIPageViewController
。关于如何使用单独的xib文件实现UIPageViewcontroller
,我能找到的唯一例子是this tutorial。
但是在本教程中,UIPageViewController
在扩展UIViewController
的类中以编程方式实例化。这使得转换为故事板如何解释UIPageViewcontroller
(它本身就是一个实例)变得复杂。
有关如何使用Xcode的故事板创建功能UIPageViewController
的任何帮助都将非常感激。
更新:我设法通过使用默认的pagecontroller模板在Xcode中创建一个新项目来解决此问题。它使用了故事板,很容易理解。
答案 0 :(得分:8)
更新:我设法通过使用默认的pagecontroller模板在xcode中创建一个新项目来解决此问题。它使用了故事板,很容易理解。
答案 1 :(得分:7)
将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开始,然后根据需要开始调用您的数据源并委托方法。
答案 2 :(得分:1)
使用Xcode 7可以轻松实现此目的。将ViewController作为您的数据源并委托在一个Storyboard场景中,并将UIPageViewController嵌入到ContainerView中。然后在ViewController的prepareForSegue方法中捕获UIPageViewController。
e.g。在斯威夫特:
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
}
}
}