关闭从 SideMenu 打开的 ViewController
Dismiss ViewController opened from SideMenu
我有一个带有 5 个屏幕的小应用程序,它们嵌入在导航堆栈中,我无法关闭 UIViewController
我在我的项目中使用 SideMenu 来展示它的最后一个 UIViewController
,这是侧边菜单的代码配置:
SideMenuManager.default.menuPushStyle = .replace
SideMenuManager.default.menuPresentMode = .menuSlideIn
以及我的呈现方式 VC:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "menuToSavedQuotes" {
_ = segue.destination as? SavedQuotesViewController
}
}
然后:self.performSegue(withIdentifier: "menuToSavedQuotes", sender: self)
它工作得很好,但是当我调用解雇操作时 - 这不起作用。我没有在我的应用程序中使用导航栏,这就是我创建按钮并试图关闭它但失败的原因。
我试过的是:
self.navigationController?.popViewController(animated: true)
self.dismiss(animated: true, completion: nil)
但是 none 这行得通。我现在拥有但仍无法正常工作的是:
override func viewDidLoad() {
super.viewDidLoad()
output?.viewIsReady()
setupNavigationStack()
}
@IBAction func didPressClose(_ sender: UIButton) {
print("Here")
self.navigationController?.popViewController(animated: true)
//self.dismiss(animated: true, completion: nil)
}
func setupNavigationStack() {
if let root = UIApplication.shared.keyWindow?.rootViewController as? StartingPageViewController {
let navigation = root.childViewControllers[0] as! UINavigationController
let vc1 = self.storyboard!.instantiateViewController(withIdentifier: "StartingPage")
let vc2 = self.storyboard!.instantiateViewController(withIdentifier: "StartTrial")
let vc3 = self.storyboard!.instantiateViewController(withIdentifier: "ScheduleNotifications")
let vc4 = self.storyboard!.instantiateViewController(withIdentifier: "AllQuotes")
let vc5 = self.storyboard!.instantiateViewController(withIdentifier: "SavedQuotes")
navigation.setViewControllers([vc1, vc2, vc3, vc4, vc5], animated: true)
}
}
作为临时解决方案,我的关闭按钮只是打开上一个 UIViewController
,但这不是一个好的做法。
如有任何帮助,将不胜感激!
谢谢!
搜索了一段时间后,我仍然找不到问题的根源,所以我继续使用解决方法:
关闭按钮只会打开上一个 UIViewController
但这不是一个好的做法。
在我的案例中,应用程序只有 3 个屏幕,这很好,但如果要谈论更大的应用程序,则不推荐使用这种解决方案。
我有一个带有 5 个屏幕的小应用程序,它们嵌入在导航堆栈中,我无法关闭 UIViewController
我在我的项目中使用 SideMenu 来展示它的最后一个 UIViewController
,这是侧边菜单的代码配置:
SideMenuManager.default.menuPushStyle = .replace
SideMenuManager.default.menuPresentMode = .menuSlideIn
以及我的呈现方式 VC:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "menuToSavedQuotes" {
_ = segue.destination as? SavedQuotesViewController
}
}
然后:self.performSegue(withIdentifier: "menuToSavedQuotes", sender: self)
它工作得很好,但是当我调用解雇操作时 - 这不起作用。我没有在我的应用程序中使用导航栏,这就是我创建按钮并试图关闭它但失败的原因。
我试过的是:
self.navigationController?.popViewController(animated: true)
self.dismiss(animated: true, completion: nil)
但是 none 这行得通。我现在拥有但仍无法正常工作的是:
override func viewDidLoad() {
super.viewDidLoad()
output?.viewIsReady()
setupNavigationStack()
}
@IBAction func didPressClose(_ sender: UIButton) {
print("Here")
self.navigationController?.popViewController(animated: true)
//self.dismiss(animated: true, completion: nil)
}
func setupNavigationStack() {
if let root = UIApplication.shared.keyWindow?.rootViewController as? StartingPageViewController {
let navigation = root.childViewControllers[0] as! UINavigationController
let vc1 = self.storyboard!.instantiateViewController(withIdentifier: "StartingPage")
let vc2 = self.storyboard!.instantiateViewController(withIdentifier: "StartTrial")
let vc3 = self.storyboard!.instantiateViewController(withIdentifier: "ScheduleNotifications")
let vc4 = self.storyboard!.instantiateViewController(withIdentifier: "AllQuotes")
let vc5 = self.storyboard!.instantiateViewController(withIdentifier: "SavedQuotes")
navigation.setViewControllers([vc1, vc2, vc3, vc4, vc5], animated: true)
}
}
作为临时解决方案,我的关闭按钮只是打开上一个 UIViewController
,但这不是一个好的做法。
如有任何帮助,将不胜感激!
谢谢!
搜索了一段时间后,我仍然找不到问题的根源,所以我继续使用解决方法:
关闭按钮只会打开上一个 UIViewController
但这不是一个好的做法。
在我的案例中,应用程序只有 3 个屏幕,这很好,但如果要谈论更大的应用程序,则不推荐使用这种解决方案。