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