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 导致崩溃....
我正在尝试实现 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 导致崩溃....