使用带有页面视图控制器的容器

Posted

技术标签:

【中文标题】使用带有页面视图控制器的容器【英文标题】:using container with page view controller 【发布时间】:2016-04-26 21:39:40 【问题描述】:

对于我当前的应用程序,我正在设置一个 UIPageViewController 以在 3 个不同的视图之间进行交换。我不打算添加任何导航栏,所以我添加了一个关闭按钮来将用户导航回主屏幕。但是,我希望关闭按钮的位置固定在右上角。所以我在 ViewController 中使用了一个容器来调用另一个带有图像和文本的视图控制器,如下所示:

在这里,页面视图控制器指向带有嵌入式 segue 的容器视图控制器,以查找页面内容控制器。

目前在我拥有的页面视图控制器的相应类中; // MARK:- 其他方法

func getViewControllerAtIndex(index: NSInteger) -> LookUpPageContentViewController

    // Create a new view controller and pass suitable data.
    let pageContentViewController = self.storyboard?.instantiateViewControllerWithIdentifier("containerLookUp") as! LookUpPageContentViewController

    pageContentViewController.strTitle = "\(arrPageTitle[index])"
    pageContentViewController.strPhotoName = "\(arrPagePhoto[index])"
    pageContentViewController.strMainTitle = "\(arrMainTitle[index])"
    pageContentViewController.pageIndex = index

    pageContentViewController.view.backgroundColor = UIColor.dondeBeigeColor()

    return pageContentViewController

然而,此方法指向查找页面内容视图控制器。如何更改此方法以调用容器视图控制器,然后再调用查找页面内容控制器。

【问题讨论】:

【参考方案1】:

通过阅读您的问题,我假设结构

-> PageViewController
 -> ContainerView 
  -> LookupView controller

所以在点击时,你应该先加载 containerView。如下所示

ContainerViewController*containerView =[self.storyboard instantiateViewControllerWithIdentifier: CONTAINER_VIEWCONTROLLER_ID];
[self.navigationController pushViewController:switchView animated:YES];

在 ContainerViewController viewDidLoad 方法上,这样做

LookUpPageContentViewController*lookUpView = // Get the Appropirate LookupView
[self.pageViewController setViewControllers:@[lookUpView] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

这将为您提供所需的功能。希望这对您有所帮助。

【讨论】:

以上是关于使用带有页面视图控制器的容器的主要内容,如果未能解决你的问题,请参考以下文章

iOS如何获取对带有segue的storyboard容器中嵌入的视图控制器的引用?

所有视图上的页面视图控制器按钮

如何首先在容器页面视图控制器中实例化任何视图?

包含模型数据的容器视图中的页面视图控制器

带有表格视图的 UIPageViewController,在 UITableView 内

将数据从带有页面控制器的 uiscrollview 传递到另一个视图控制器 [关闭]