【问题标题】:How to add ViewController to UIPageViewController如何将 ViewController 添加到 UIPageViewController
【发布时间】:2013-04-03 09:33:06
【问题描述】:

我的故事板上有一个 UIPageViewController,现在我想知道如何向它添加视图控制器?假设我有 5 个视图控制器,如何将它们从头到尾添加到 UIPageViewController?通常我会这样做:

        [self addChildViewController:firstViewController];
        [self addChildViewController:secondViewController];
        [self addChildViewController:thridViewController];
        [self addChildViewController:fourthViewController];
        [self addChildViewController:fifthViewController];

但我不确定如何按此顺序在 UIPageViewController 上添加它...

编辑:

ChapterViewController *chapterViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"ChapterView"];
NSArray *viewControllers = [NSArray arrayWithObject:chapterViewController];

[self setViewControllers:viewControllers
                         direction:UIPageViewControllerNavigationDirectionForward
                          animated:NO
              completion:^(BOOL finished){
                  NSLog(@"call back success");}];

【问题讨论】:

    标签: iphone ios objective-c xcode storyboard


    【解决方案1】:

    UIPageViewController 不允许以简单的方式一次添加一个新的视图控制器,大概是因为 Apple 希望开发人员不非常容易地一次添加一个页面(我可以看到这会让应用程序的用户感到困惑)。

    要做你想做的事,你必须将新的视图控制器添加到一个数组(大概是已经存在的视图控制器的数组,你通过"viewControllers"检索)然后调用"setViewControllers:direction:animated:completion:"与new 视图控制器数组,包括要添加到页面视图控制器的一个(或多个)新视图控制器。

    【讨论】:

    • 请检查我编辑的答案,我已经尝试过了,但它只是显示黑屏..(我已将代码放在 UIPageViewController 类的 viewDidLoad 中)
    • 但是“回调成功”确实会打印出来
    • 发生这种情况的原因是您的页面视图控制器对要显示的什么感到困惑。当您调用此代码时,它正在显示一些其他视图控制器,但随后您将删除 所有视图控制器 并仅将其替换为您的 ChapterViewController,我怀疑这不是您真正想要做的。您需要将您的 ChapterViewController 添加到所有其他视图控制器的末尾。
    • 在您的 ChapterViewController 中设置断点并查看是否调用了“viewDidLoad”。另外,当您将“animated”参数设置为“YES”时会发生什么?
    • 你为什么不来chat with me on chat.stackoverflow.com 而不是我们在一个巨大的评论线程中讨论这个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多