3d 触摸导航到特定 viewController

3d touch navigate to specific viewController

我正在尝试实现 3d Touch,我想导航到 Master - Detail 应用程序中的特定 viewController。

我要访问的 viewController 是层次结构中的第三个控制器:

MasterViewController ----> SettingsViewController ----> ThirdViewController

我可以通过 TabBarItem(通过 segue 直接从 IB 连接到 SettingsViewController)然后通过 UIButton(通过 segue 连接)在正常操作中访问 ThirdViewController从 IB) 到 ThirdViewController 的 ThirdViewController。

即在 MasterViewController --->(点击 barButtonItem)----> SettingsViewControler ---->(点击 uiButton)---> ThirdViewController。

我已经修改了 info.plist 并且 3D touch 工作正常,可以调用我的操作:

 func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) {

        var shortcutDictionary = shortcutItem.userInfo;
        let shortcutString1 = shortcutDictionary!["key1"] as! String

        if (shortcutString1 == "value1") {

      // how do i get from here to the settingsController??

        }

    }

编辑:

已经尝试过:

let viewController = MasterViewController()    viewController.settingsButton.sendActionsForControlEvents(.TouchUpInside)

这给了我一个 error:fatal 尝试解包一个可选值的错误!

虽然这存在于 MasterViewController

 @IBOutlet weak var settingsButton: UIButton!

这是我用于快捷方式的代码....

func actionFromShortcut(sender: AnyObject!) {


        let dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(0.1 * Double(NSEC_PER_SEC)))
        dispatch_after(dispatchTime, dispatch_get_main_queue(), {


            self.performSegueWithIdentifier("shotcutToSettings", sender: nil)

//some other stuff here.....


        })

此外,根据@MattLong 的评论,我已将转场复制到我的控制器(一个有动画,一个没有动画)。这样,当从快捷方式调用操作时,快捷方式转换似乎是同时发生的。

您会注意到延迟为 0.1。这是为了让 MasterViewController 有时间加载,因为每当我尝试从冷调用快捷方式时(应用程序不是 运行)我最终会得到我请求的 viewController 但是会有一个空的 MasterViewController 到 return 导致崩溃....