如何继续聚焦搜索和显示内容ViewController

时间:2017-09-10 10:48:27

标签: ios swift uiapplication corespotlight

我将Spotlight搜索全部整理出来,我现在面临的问题是如何根据聚光灯下的项目显示内容视图。

我的应用结构为UITabVC> UINavigationVC> UICollectionVC> UIVC

聚光灯和代码如下所示

// Continue Spotlight Search
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
    if userActivity.activityType == CSSearchableItemActionType {
        let uniqueIdentifier = userActivity.userInfo?[CSSearchableItemActivityIdentifier] as! String
        let id = uniqueIdentifier.components(separatedBy: "_")
        let rootTabVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "RootTabVC") as! RootTabVC

        print(id[0], id[1], separator: " - ", terminator: "\n")
        // printed "craft - Shovel"

        switch id[0] {
        case "craft" :
            let craftVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "CraftDetailVC") as! CraftItemDetailVC
            let craftRootCollectionVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "CraftRootCollectionVC") as! CraftCollectionVC
            let craftItemsCollectionVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "CraftItemsCollectionVC") as! CraftItemsCollectionVC
            // MARK: - TODO show vc

        case "character" : break
        case "mob" : break
        case "plant" : break
        case "recipe" : break
        case "thing" : break
        case "material" : break
        default: break
        }
    }

    return true
}

enter image description here

2 个答案:

答案 0 :(得分:5)

ApplicationDelegate类中实现此功能:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {

然后,您可以通过以下方式访问点击的CSSearchableItem uniqueIdentifier

if let searchActivityIdentifier = userActivity.userInfo [CSSearchableItemActivityIdentifier] as? String { }

然后您需要做的就是根据searchActivityIdentifier值将用户重定向到相关的视图控制器。(推送,呈现等)

答案 1 :(得分:1)

即使我在我的应用程序中遇到同样的问题。然后我在网上冲浪寻找解决方案,here最好的示例和代码以及它的解释。

application/x-www-form-urlencoded