导航栏项目在使用MMDrawerController时消失

时间:2015-08-26 17:54:51

标签: ios swift

我正在使用 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;
  1. 最后一段代码让我觉得它正在重新启动 TabBarController ,而不是“恢复”已经被初始化的那个。是这样吗?

  2. 实现这一目标的正确方法是什么?

  3. 对不起问题的长度(只需输入此内容即可进一步增加)

1 个答案:

答案 0 :(得分:-1)

我添加了.navigationController

在didSelectRowAtIndexPath indexPath:NSIndexPath中)

appDelegate.centerContainer!.centerViewController centerViewController.navigationController

        break;