返回父视图控制器或关闭子视图控制器
Moving back to parent view controller or dismissing child view controller
单击按钮后,我从一个控制器导航到另一个控制器。我最初是在做 self.present(nextViewController, animated:true, completion:nil)
,它覆盖了设备上的整个 window。由于我希望它与我的主(呈现)控制器一样大,下面是我现在用来呈现新控制器的代码。
从父控制器导航到 NewViewController:
@IBAction func doneButtonAction(_ sender: Any) {
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let nextViewController = storyBoard.instantiateViewController(withIdentifier: "MyViewID") as! NewViewController
nextViewController.view.frame = self.view.bounds
nextViewController.willMove(toParent: self)
self.view.addSubview(nextViewController.view)
self.addChild(nextViewController)
nextViewController.didMove(toParent: self)
//self.present(nextViewController, animated:true, completion:nil)
}
这工作正常并导航到 NewViewController 控制器。但是现在从 NewViewController 控制器,我希望回到这个我的关闭逻辑不起作用的父控制器。
从 NewViewController 返回父控制器
@IBAction func backButtonAction(_ sender: Any) {
self.dismiss(animated: true, completion: nil)
}
我错过了什么?如何返回父控制器?
要在整个 window 中呈现,您实际上需要做的是修改 nextViewController
的 modalPresentationStyle
属性。
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let nextViewController = storyBoard.instantiateViewController(withIdentifier: "MyViewID") as! NewViewController
nextViewController.modalPresentationStyle = .fullScreen
present(nextViewController, animated: true)
将此代码添加到 doneButtonAction
并以旧方式呈现。
单击按钮后,我从一个控制器导航到另一个控制器。我最初是在做 self.present(nextViewController, animated:true, completion:nil)
,它覆盖了设备上的整个 window。由于我希望它与我的主(呈现)控制器一样大,下面是我现在用来呈现新控制器的代码。
从父控制器导航到 NewViewController:
@IBAction func doneButtonAction(_ sender: Any) {
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let nextViewController = storyBoard.instantiateViewController(withIdentifier: "MyViewID") as! NewViewController
nextViewController.view.frame = self.view.bounds
nextViewController.willMove(toParent: self)
self.view.addSubview(nextViewController.view)
self.addChild(nextViewController)
nextViewController.didMove(toParent: self)
//self.present(nextViewController, animated:true, completion:nil)
}
这工作正常并导航到 NewViewController 控制器。但是现在从 NewViewController 控制器,我希望回到这个我的关闭逻辑不起作用的父控制器。
从 NewViewController 返回父控制器
@IBAction func backButtonAction(_ sender: Any) {
self.dismiss(animated: true, completion: nil)
}
我错过了什么?如何返回父控制器?
要在整个 window 中呈现,您实际上需要做的是修改 nextViewController
的 modalPresentationStyle
属性。
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let nextViewController = storyBoard.instantiateViewController(withIdentifier: "MyViewID") as! NewViewController
nextViewController.modalPresentationStyle = .fullScreen
present(nextViewController, animated: true)
将此代码添加到 doneButtonAction
并以旧方式呈现。