如何根据滑出菜单导航到不同的视图控制器
Posted
技术标签:
【中文标题】如何根据滑出菜单导航到不同的视图控制器【英文标题】:How to navigate to different view controllers based on slide out menu 【发布时间】:2016-04-30 03:06:11 【问题描述】:我是 Swift 新手,现在已经尝试了很多小时。
我的应用如下所示:
理想情况下,我希望他们单击此弹出菜单中的一个选项,该选项会将他们带到另一个视图。现在,我在 QuotesTimelineViewController 上,但说我想点击书签按钮,然后我想去 SavedQuotesViewController。
这是我的故事板的样子:
QuotesViewController 中嵌入了 NavigationController。当您单击菜单按钮时,它会转到以模态方式呈现的 NavigationSideController。现在我不知道如何为我接下来要完成的事情制作转场。
这是我的 NavigationSideController 代码,所以现在当您单击导航边栏中的图标时会发生什么,它会关闭该动画并且导航边栏消失。也许你可以看到所有被注释掉的代码。
这是来自 QuotesTimelineViewController 的一些相关代码(我认为):
但我可能缺少一些东西,所以如果你想查看我的整个 repo,它就在这里:https://github.com/mayaah/ios-decal-proj4
任何指导都会很有帮助!最终,每当我单击导航侧栏中的图标时,我都会希望与该图标相对应的视图控制器会打开。到目前为止,我取得的最大进展是出现窗口层次结构错误!我猜是因为当我单击一个图标时,QuotesTimelineViewController 不是堆栈的顶部或我不知道的东西。
【问题讨论】:
@khuong291 这是什么意思? 这意味着当您按下slide out menu
上的任何按钮时,它将通知更改ViewController
@khuong291 是的,这就是我想做的,但我不知道该怎么做
@mayaah 这将帮助您理解:useyourloaf.com/blog/quick-guide-to-swift-delegates
【参考方案1】:
我可以在这里提出两个解决方案
-
使用侧边菜单第三方库。
在创建应用端时需要注意很多事情 菜单包括嵌套层次/旋转、阴影等。第三个 派对图书馆将轻松处理它们并经过良好测试 代码。你可以从cocoacontrols中选择你喜欢的一个
使用导航控制器并在表选择时更改 Active VC
基本思想是在您的应用委托中创建一个新的 navigationController 并创建所有不同类型的入口点。
所以在你的应用委托中,声明一个新的UINavigationController
变量。
您不会在这种方法中使用故事板 initialVC。
在didFinishLaunching
应用委托的方法
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)
这仍然是粗略的,但给出了管理层次结构所需的概念。 如果需要任何澄清,请告诉我。
【讨论】:
你是救生员,谢谢。我选择了选项 2 :)以上是关于如何根据滑出菜单导航到不同的视图控制器的主要内容,如果未能解决你的问题,请参考以下文章