如何正确推送viewcontroller

时间:2015-10-08 14:06:39

标签: ios uitableview uinavigationcontroller swift2 ios9

这是我的故事板: enter image description here

简短描述:

  • 我的应用程序以LaunchController
  • 开头
  • 模态segue显示Reveal View Controller
  • 这带来了菜单控制器和我的主导航控制器(ID “NavController”;绿色Navbar)在一起。这将创建一个幻灯片 菜单。 (基本代码: appcoda.com/ios-programming-sidebar-navigation-menu /)
  • 我的主导航控制器显示了一个TableViewController。
  • 这个有一个菜单按钮(3行),用于制作幻灯片菜单 可见
  • 加号图标将推送最后一个视图控制器(ID:“VC1”)。

我的问题: 我想为我的应用设置快速操作。 此代码有助于此:

@available(iOS 9.0, *)
    func handleShortcut( shortcutItem:UIApplicationShortcutItem ) -> Bool {

        var succeeded = false

        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let initialViewController = storyboard.instantiateViewControllerWithIdentifier("NavController")
        self.window?.rootViewController = initialViewController

        let navVC = self.window?.rootViewController as! UINavigationController

        switch shortcutItem.type {

        default:
            navVC.pushViewController(storyboard.instantiateViewControllerWithIdentifier("VC1"), animated: false)
            succeeded = true
            break
        }
        return succeeded

    }

此代码将NavController设置为初始Controller并将其推送到VC​​1。 这很好。

使用VC 1中的X图标,我使用unwind功能返回TableView。 问题:如果我使用undwind功能并回到tableview我无法打开幻灯片菜单。菜单图标上的触摸没有反应。

问题可能是,我通过Reveal View Controller背后的快速操作启动应用程序。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您是否尝试将揭密视图控制器作为应用的入口点并删除启动控制器,因为如果您只想返回主视图,则可以执行此操作:

    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let controller = storyboard.instantiateInitialViewController() as UIViewController!
    self.presentViewController(controller, animated: false, completion: nil)

如果你不能解释启动控制器的用途?