我想从其父级中删除viewController。我尝试过:
selectCardViewController.removeFromParent()
这:
selectCardViewController.view.removeFromSuperview()
但是我的viewController仍然在屏幕上。
我该如何解决?
更新
这就是我呈现此viewController的方式:
private func setupModalSelectCard() {
selectCardViewController = SelectCardViewController(nibName:"SelectCardViewController", bundle:nil)
self.addChild(selectCardViewController)
selectCardViewController.view.layer.cornerRadius = 12
self.view.addSubview(selectCardViewController.view)
cardHandleOriginY = selectCardViewController.handleArea.frame.origin.y
selectCardViewController.view.frame = CGRect(x: 0, y: self.view.frame.height - cardHandleOriginY - selectCardHandleAreaHeight, width: self.view.bounds.width, height: selectCardHeight)
selectCardViewController.view.clipsToBounds = true
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(EditorViewController.handleCardTap(recognzier:)))
let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(EditorViewController.handleCardPan(recognizer:)))
selectCardViewController.handleArea.addGestureRecognizer(tapGestureRecognizer)
selectCardViewController.handleArea.addGestureRecognizer(panGestureRecognizer)
selectCardViewController.view.layoutIfNeeded()
}
答案 0 :(得分:0)
如果我正确地阅读了您的问题,则说明您位于selectCardViewController中,并且想要停止该视图控制器。 RemoveFromParent仅打算由自定义容器视图控制器的实现调用。 selectCardViewController可能没有父级。无法删除来自视图控制器本身的视图,因为它也没有父视图。
要解决这种情况,您可以在视图控制器中实现一个要返回的方法。该方法必须具有以下声明:
@IBAction func myGobackMethod(segue: UIStoryboardSegue) {
//Do whatever you want to do.
}
在情节提要中,可以通过控制将按钮拖到视图控制器中的出口,从而将selectCardViewController中的按钮链接到此方法。
如果要使用编写的代码返回该方法,则:
performSegue(withIdentifier:“ myIdentifuer”,发件人:“ Whomever例如self”)
希望这会有所帮助。