如何基于滑出菜单导航到不同的视图控制器
我是Swift的新手,现在已经尝试了好几个小时。
这是我的应用程序的样子:
理想情况下,我希望他们从弹出菜单中单击一个选项,将其带到另一个视图。 现在,我在QuotesTimelineViewController上但是我想点击书签按钮然后我想去SavedQuotesViewController。
以下是我的故事板的样子:
QuotesViewController中嵌入了一个NavigationController。 当您单击菜单按钮时,它将转到以模态方式显示的NavigationSideController。 现在我不知道如何为我接下来要完成的事情做好准备。
这是我的NavigationSideController的代码所以现在当你点击导航栏中的一个图标时会发生什么,它会解散那个动画并且导航栏就会消失。 也许你可以看到所有注释掉的代码。
这是来自QuotesTimelineViewController的一些相关代码(我认为):
但是我可能会遗漏一些东西,所以如果你想看看我的整个回购,请点击这里: https : //github.com/mayaah/ios-decal-proj4
任何指导都会非常有用! 最后,每当我点击导航栏中的图标时,我都会想到与该图标对应的视图控制器。 到目前为止我取得的最大进步是获得了窗口层次结构错误! 我想因为当我点击一个图标时,QuotesTimelineViewController不是堆栈顶部或我不知道的东西。
我可以在这提出两个解决方案
- 使用侧边菜单第三方库。
在创建应用程序侧面菜单时需要注意很多事情,包括嵌套的层次/旋转,阴影等。第三方库将很容易地处理它们并且是经过良好测试的代码。 你可以从cocoacontrols中选择你喜欢的那个
-
使用导航控制器并在表选择上更改活动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) }
这仍然是粗略的,但给出了你需要管理层次结构的想法。 如果需要澄清,请与我们联系。