【问题标题】:Navigation Bar Items disappearing while using MMDrawerController使用 MMDrawerController 时导航栏项目消失
【发布时间】: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;
  1. 最后一段代码让我觉得它正在重新启动 TabBarController,而不是“恢复”已经初始化的那个。是这样吗?

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

对不起问题的长度(只是通过输入进一步增加它)

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    我添加了 .navigationController

    在didSelectRowAtIndexPath indexPath: NSIndexPath)

    appDelegate.centerContainer!.centerViewController centerViewController.navigationController

            break;
    

    【讨论】:

      猜你喜欢
      • 2015-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多