我有一个UITabViewController,我正在使用shouldSelect委托方法来覆盖发生的事情:
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
if viewController == tabBarController.viewControllers?[3] {
let menuRightNavigationController = storyboard!.instantiateViewController(withIdentifier: "RightMenuNavigationController") as! UISideMenuNavigationController
SideMenuManager.default.menuRightNavigationController = menuRightNavigationController
present(SideMenuManager.default.menuRightNavigationController!, animated: true, completion: nil)
return false
}
else
{
return true
}
}
当我第一次使用它时,一切都很好......第二次,我收到了这个错误:
'应用程序尝试以模态方式呈现活动控制器
<AppName.TabBarController: 0x7fe1b3856600>.'
右后卫,RightMenuNavigationController基本上是一个NavigationController,它有一个名为MenuController的Root View Controller ... MenuController有一个登录按钮,然后我的用户会看到一个登录界面,成功登录后它返回标签栏控制器通过self.performSegue(withIdentifier: "toolbarSegue", sender: nil)
我做错了什么?第一次完成后,我怎么能让RightMenuNavigationController不活动?
以下是一些更多细节,在我的MenuController中,我有这个按钮动作:
@objc func loginButtonPressed(_ sender: UIButton) {
let viewController = storyboard?.instantiateViewController(withIdentifier: "LoginController") as! LoginController
let navigationController: UINavigationController = UINavigationController(rootViewController: viewController)
present(navigationController, animated: true, completion: nil)
}
显示登录视图控制器。