如何基于滑出菜单导航到不同的视图控制器

我是Swift的新手,现在已经尝试了好几个小时。

这是我的应用程序的样子:

在此处输入图像描述

理想情况下,我希望他们从弹出菜单中单击一个选项,将其带到另一个视图。 现在,我在QuotesTimelineViewController上但是我想点击书签按钮然后我想去SavedQuotesViewController。

以下是我的故事板的样子: 在此处输入图像描述

QuotesViewController中嵌入了一个NavigationController。 当您单击菜单按钮时,它将转到以模态方式显示的NavigationSideController。 现在我不知道如何为我接下来要完成的事情做好准备。

这是我的NavigationSideController的代码所以现在当你点击导航栏中的一个图标时会发生什么,它会解散那个动画并且导航栏就会消失。 也许你可以看到所有注释掉的代码。

在此处输入图像描述

这是来自QuotesTimelineViewController的一些相关代码(我认为):

在此处输入图像描述

但是我可能会遗漏一些东西,所以如果你想看看我的整个回购,请点击这里: https : //github.com/mayaah/ios-decal-proj4

任何指导都会非常有用! 最后,每当我点击导航栏中的图标时,我都会想到与该图标对应的视图控制器。 到目前为止我取得的最大进步是获得了窗口层次结构错误! 我想因为当我点击一个图标时,QuotesTimelineViewController不是堆栈顶部或我不知道的东西。

我可以在这提出两个解决方案

  1. 使用侧边菜单第三方库。

在创建应用程序侧面菜单时需要注意很多事情,包括嵌套的层次/旋转,阴影等。第三方库将很容易地处理它们并且是经过良好测试的代码。 你可以从cocoacontrols中选择你喜欢的那个

  1. 使用导航控制器并在表选择上更改活动VC

    基本思想是在您的app委托中创建一个新的navigationController并创建所有不同类型的入口点。 所以在你的app委托中,声明一个新的UINavigationController变量。

你不会在这种方法中使用storyboard initialVC。 在didFinishLaunching app委托方法

 var navController:UINavigationController! func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch. let storyboard = UIStoryboard(name: "Main", bundle: nil) // make sure to set storyboard id in storyboard for these VC let startingVC = storyboard.instantiateViewControllerWithIdentifier("QuotesTimeLine"); navController = UINavigationController(rootViewController: startingVC) self.window!.rootViewController = navController return true } 

然后在侧边菜单中,使用新VC更新navController的viewControllers

  func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { let storyboard = UIStoryboard(name: "Main", bundle: nil) // make sure to set storyboard id in storyboard for these VC let startingVC = storyboard.instantiateViewControllerWithIdentifier("NewVC"); let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate appDelegate.navController.viewControllers = [startingVC] dismissViewControllerAnimated(true, completion: nil) } 

这仍然是粗略的,但给出了你需要管理层次结构的想法。 如果需要澄清,请与我们联系。