如何根据幻灯片菜单

时间:2016-04-30 03:06:12

标签: ios swift uiviewcontroller segue

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

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

enter image description here

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

以下是我的故事板的样子: enter image description here

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

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

enter image description here

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

enter image description here

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

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

1 个答案:

答案 0 :(得分:4)

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

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

    创建应用程序端时需要注意很多事情   菜单包括嵌套层次/旋转,阴影等。第三个   党的图书馆将很容易照顾他们,并经过充分测试   码。您可以从cocoacontrols

    中选择您喜欢的那个
    1. 使用导航控制器并更改表格选择上的活动VC

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

    2. 你不会在这种方法中使用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)
          }
      

      这仍然很粗糙,但却提供了管理层次结构所需要的想法。 如果需要澄清,请告诉我。