3d touch导航到特定的viewController

时间:2015-11-30 20:07:42

标签: segue drilldown 3dtouch

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

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

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

我可以在正常操作中通过TabBarItem(通过segue连接到来自IB的SettingsViewController )访问ThirdViewController,然后通过UIButton(通过segue连接到来自IB的ThirdViewController < / strong>)到ThirdViewController。

即在MasterViewController ---&gt; (点击barButtonItem)----&gt; SettingsViewControler ----&gt; (点击uiButton)---&gt; 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)

这给了我一个错误:试图解开一个可选值的致命错误!

虽然这存在于MasterViewController

 @IBOutlet weak var settingsButton: UIButton!

1 个答案:

答案 0 :(得分:0)

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

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的评论,我已经将segues复制到我的控制器(一个有一个没有动画)。这样,当从快捷方式调用操作时,快捷方式转换似乎是同时的。

你会注意到0.1的延迟。这是为了给MasterViewController加载时间,因为每当我试图从寒冷调用快捷方式时(应用程序没有运行)我最终会得到我请求的viewController但是会有一个空的MasterViewController返回并因此崩溃....