如何理解基于页面的应用程序模板中的RootViewController?

时间:2013-12-16 01:25:56

标签: ios uipageviewcontroller

我使用Apple的模板在Xcode 5中创建了一个基于页面的应用程序。在哪里可以找到有用的信息让我理解以下代码?

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
    self.pageViewController.delegate = self;

    DataViewController *startingViewController = [self.modelController viewControllerAtIndex:0 storyboard:self.storyboard];
    NSArray *viewControllers = @[startingViewController];

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

    self.pageViewController.dataSource = self.modelController;

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

    CGRect pageViewRect = self.view.bounds;
    self.pageViewController.view.frame = pageViewRect;

    [self.pageViewController didMoveToParentViewController:self];

    self.view.gestureRecognizers = self.pageViewController.gestureRecognizers;
}

1 个答案:

答案 0 :(得分:1)

NSArray *viewControllers = @[startingViewController]; // <--what does it mean???

UIPageViewController文档中解释了所有内容,尤其是here in the setViewControllers:direction:animated:completion: method请参阅解释每种可能情况的表格

特别是,UIPageViewController呈现一个或两个视图控制器,具体取决于它们是单面还是双面。这就是为什么属性是一个数组,因为它期望显示一个或两个ViewController的NSArray


[编辑]当您编辑帖子以添加有关代码的每一行的问题时,我们无法在一个简单的答案中回答所有问题。这里的概念太多了。

您可能需要获得一本关于iOS编程的书,以解释这里的所有基本概念,或阅读Apple网站上的“View Controller Programming Guide”文档以及所有其他Apple文档关于每个概念,例如:

  • 什么是故事板(参见用户界面编程指南)
  • 委托和数据源的概念是什么(参见Apple的DevPedia和设计指南编程指南)
  • 子视图的概念是什么?视图层次结构在Cocoa中是如何工作的(参见“视图编程指南”)以及视图的坐标系如何工作(如边界和框架,参见相同的文档)
  • View Controller Containers如何工作(请参阅View Controller编程指南)
  • 触摸检测和手势如何工作(请参阅触摸和手势编程指南)

在一个SO问题中解释和提问真的很多,这也是关于CocoaTouch和iOS编程的一些基础知识的很多问题,在专门的教程或书籍和每个主题的编程指南中有更好的解释每个!!