我正在尝试实现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!
答案 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返回并因此崩溃....