如何删除最后一个实例化的ViewController,最后一个TableViewController变为活动状态

Posted

技术标签:

【中文标题】如何删除最后一个实例化的ViewController,最后一个TableViewController变为活动状态【英文标题】:How to delete the last instantiated ViewController and the last TableViewController becomes active 【发布时间】:2017-04-23 08:02:53 【问题描述】:

我实例化了一个 PageViewController 并显示图像。

let storyboard = UIStoryboard(name: "Main", bundle: nil)
    self.pageViewController = storyboard.instantiateViewController(withIdentifier: "articlePageViewController") as! UIPageViewController
    self.pageViewController.dataSource = self
    let initialContenViewController = self.pageTutorialAtIndex(0) as ArticleImageViewController
    self.pageViewController.setViewControllers([initialContenViewController], direction: UIPageViewControllerNavigationDirection.forward, animated: true, completion: nil)



    self.pageViewController.view.frame = CGRect(x: 0, y: 0, width: Int(self.view.frame.width), height: Int(self.view.frame.height))
    self.pageViewController.view.center = self.mainView.center
    self.pageViewController.view.tag = 100
    self.addChildViewController(self.pageViewController)
    self.view.addSubview(self.pageViewController.view)
    self.pageViewController.didMove(toParentViewController: self)

ImageView 中的图片:

现在我想删除 Pageviewcontroller 并点击按钮返回 Maintableview。这是点击按钮的代码。

self.willMove(toParentViewController: nil)
self.view.removeFromSuperview()
self.removeFromParentViewController()

图像被删除,Maintableviewcontroller 显示但未激活。当我显示视图 UI 层次结构时,pageviewcontrollercontentview 位于前面。

视图层次结构:

如何删除它并返回到 Maintableviewcontroller?

【问题讨论】:

【参考方案1】:

虽然很简单,但您将 pageviewcontroller 添加为:

self.addChildViewController(self.pageViewController)   //===> Step 1
self.view.addSubview(self.pageViewController.view) //additional step required while adding
self.pageViewController.didMove(toParentViewController: self)   //===> Step 2

试试:

    [self.pageViewController removeFromParentViewController];    //===> Reverse of Step 1
    [self.pageViewController didMoveToParentViewController:self];//===> Reverse of Step 2

来自 PageViewController 的调用如下:

    [self removeFromParentViewController];    //===> Reverse of Step 1
    [self didMoveToParentViewController:self.parentViewController];//===> Reverse of Step 2

【讨论】:

谢谢,但这不起作用。该按钮在一个新的控制器和类中,我在新类中没有 pageViewController。

以上是关于如何删除最后一个实例化的ViewController,最后一个TableViewController变为活动状态的主要内容,如果未能解决你的问题,请参考以下文章

必须使用延迟实例化的UI视图将子视图添加到视图控制器两次

模板是如何实例化的?

Django:RelatedManager 对象是如何实例化的?

如何在运行时控制实例化的预制件作为孩子

如何模拟在函数外部实例化的常量?

如何在 Vue.js 中将实例化的 Vue 组件作为道具传递?