如何删除最后一个实例化的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变为活动状态的主要内容,如果未能解决你的问题,请参考以下文章