【发布时间】:2015-08-26 17:54:51
【问题描述】:
我正在使用 MMDrawerController 在我的应用程序中浏览各种视图,其中一个是 TabBarController,它有 5 个进一步的视图链接到它的 5 个栏项中的每一个。这 5 个视图中的每一个都附加了导航栏项目。这 5 个视图中的每一个的左栏 Item 切换 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 个 ViewController 上点击左栏按钮时,我正在调用此方法
@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,而不是“恢复”已经初始化的那个。是这样吗?
实现这一目标的正确方法应该是什么?
对不起问题的长度(只是通过输入进一步增加它)
【问题讨论】: