1

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

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

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

我可以通过 TabBarItem(通过 segue 直接从 IB 连接到 SettingsViewController)在正常操作中访问 ThirdViewController,然后通过 UIButton(通过 segue 直接从 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)

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

虽然这存在于 MasterViewController

 @IBOutlet weak var settingsButton: UIButton!
4

1 回答 1

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 返回并因此崩溃......

于 2015-12-03T23:03:39.263 回答