我正在使用 MMDrawerController 来浏览我的应用中的各种视图,其中一个是 TabBarController ,其中还有5个视图链接到其每个5个条形项目。这5个视图中的每一个都附有导航栏项目。这5个视图中的每个视图上的左栏条目切换 LeftViewController (我用作抽屉的视图)。我在 AppDelegate 中使用此代码来实现此目的
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var centerViewController = mainStoryboard.instantiateViewControllerWithIdentifier("TabBarController") as! TabBarController
var leftViewController = mainStoryboard.instantiateViewControllerWithIdentifier("LeftViewController") as! LeftViewController
var leftsideNav = UINavigationController(rootViewController: leftViewController)
var centerNav = UINavigationController(rootViewController: centerViewController)
centerContainer = MMDrawerController(centerViewController: centerViewController, leftDrawerViewController: leftViewController)
centerContainer!.closeDrawerGestureModeMask = MMCloseDrawerGestureMode.PanningCenterView
当我在5个ViewControllers
上点击左侧栏按钮时,我正在调用此方法@IBAction func leftButtonTapped(sender: AnyObject) {
var appDelegate:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.centerContainer!.toggleDrawerSide(MMDrawerSide.Left, animated: true, completion: nil)
}
到目前为止工作完美。
现在我在 LeftViewController 中有一个tableView,我希望在其中实现以下行为 - 点击第一行导航我们到 TabBarController ,而第二行需要我们转到另一个 ViewController ,withFullCloseAnimation
设置为true
。
以下是 LeftViewController 的tableView
的didSelectRowAtIndexPath
方法中的代码
var appDelegate:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var centerViewController = mainStoryboard.instantiateViewControllerWithIdentifier("TabBarController") as! TabBarController
var centerNav = UINavigationController(rootViewController: centerViewController)
appDelegate.centerContainer?.setCenterViewController(centerNav, withFullCloseAnimation: true, completion: nil)
appDelegate.centerContainer!.toggleDrawerSide(MMDrawerSide.Left, animated: true, completion: nil)
break;
这使得TabBarController中5个视图的导航栏项目消失。如果我使用它,它可以正常工作 -
var appDelegate:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.centerContainer!.toggleDrawerSide(MMDrawerSide.Left, animated: true, completion: nil)
break;
最后一段代码让我觉得它正在重新启动 TabBarController ,而不是“恢复”已经被初始化的那个。是这样吗?
实现这一目标的正确方法是什么?
对不起问题的长度(只需输入此内容即可进一步增加)
答案 0 :(得分:-1)
我添加了.navigationController
appDelegate.centerContainer!.centerViewController centerViewController.navigationController
break;