繁体   English   中英

使用MMDrawerController时导航栏项目消失

[英]Navigation Bar Items disappearing while using MMDrawerController

我使用MMDrawerController通过我的应用程序之一的各种视图导航哪个是哪个了5点链接到它的每一个5个栏项目的进一步意见TabBarController。 这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点击,而第二行把我们带到另一个视图控制器 ,并与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. 什么是实现此目标的正确方法?

很抱歉问题的长度(只需输入此字符即可进一步增加)

我添加了.navigationController

在didSelectRowAtIndexPath indexPath:NSIndexPath)中

appDelegate.centerContainer!.centerViewController centerViewController.navigationController

        break;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM