通过3D触摸应用图标将VC从performActionFor shortcutItem嵌入到NavigationVC中,可以通过以下步骤实现:
application(_:performActionFor:completionHandler:)
方法中,处理shortcutItem的点击事件。在该方法中,可以通过shortcutItem的type属性来判断用户点击的是哪个shortcutItem。application(_:didFinishLaunchingWithOptions:)
方法中,判断应用是通过3D Touch快捷方式启动的。如果是,则将NavigationVC设置为根视图控制器。下面是一个示例代码:
func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
if shortcutItem.type == "com.example.shortcutItem1" {
let vc = ViewController1() // 创建对应的视图控制器
let navVC = UINavigationController(rootViewController: vc) // 创建NavigationVC,并将VC作为其根视图控制器
window?.rootViewController = navVC // 将NavigationVC设置为根视图控制器
} else if shortcutItem.type == "com.example.shortcutItem2" {
let vc = ViewController2() // 创建对应的视图控制器
let navVC = UINavigationController(rootViewController: vc) // 创建NavigationVC,并将VC作为其根视图控制器
window?.rootViewController = navVC // 将NavigationVC设置为根视图控制器
}
completionHandler(true)
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
if let shortcutItem = launchOptions?[UIApplication.LaunchOptionsKey.shortcutItem] as? UIApplicationShortcutItem {
if shortcutItem.type == "com.example.shortcutItem1" {
let vc = ViewController1() // 创建对应的视图控制器
let navVC = UINavigationController(rootViewController: vc) // 创建NavigationVC,并将VC作为其根视图控制器
window?.rootViewController = navVC // 将NavigationVC设置为根视图控制器
} else if shortcutItem.type == "com.example.shortcutItem2" {
let vc = ViewController2() // 创建对应的视图控制器
let navVC = UINavigationController(rootViewController: vc) // 创建NavigationVC,并将VC作为其根视图控制器
window?.rootViewController = navVC // 将NavigationVC设置为根视图控制器
}
}
return true
}
这样,当用户通过3D Touch点击应用图标上的shortcutItem时,对应的视图控制器将会被嵌入到NavigationVC中,并成为应用的当前界面。
领取专属 10元无门槛券
手把手带您无忧上云