在取消分配时尝试加载视图控制器的视图。 CoreSpotlight

时间:2015-10-08 10:00:31

标签: ios swift2 uistoryboardsegue corespotlight

我在我的应用中集成了CoreSpotlight。我希望用户在聚光灯搜索中找到需要信息,用户将在聚焦信息中打开此信息,在DetailViewController中打开。我做到了,聚光灯效果很好,但是当应用程序打开时我看到这个错误尝试加载视图控制器的视图时,它是不允许解除分配并且可能导致未定义的行为(UIAlertController:0x1245a0560)虽然我没有使用UIAlertController。我在AppDelegate func中调用了UITableViewController的函数,它必须通过索引打开对象。但它没有出现。仍然存在showData()performSegueWithIdentifier("show", sender: nil) 原因中的错误:' Receiver()没有带标识符的segue' show'' 。虽然我添加了segue(显示名称),但是当我通常选择单元格时它会起作用。请帮帮我。

    AppDelegate
  func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
        if userActivity.activityType == CSSearchableItemActionType {
            if let identifier = userActivity.userInfo?[CSSearchableItemActivityIdentifier] as? String {
                print(identifier)
                checkWord = identifier // checkWord is String

                let tableC = TableViewController()
                tableC.showData()

                return true
            }
        }
        return false
    }


  func showData() {
    let matchString = appDel.checkWord
    if mainArray.contains(matchString) {
        let ind = mainArray.indexOf(matchString)!

        let indexPathMain = NSIndexPath(forItem: ind, inSection: 0)
        print(indexPathMain)
        self.tableView.selectRowAtIndexPath(indexPathMain, animated: true, scrollPosition: UITableViewScrollPosition.None)

        performSegueWithIdentifier("show", sender: nil)
        print("Show data")
    }
}

1 个答案:

答案 0 :(得分:8)

如果你没有实现willContinueUserActivityWithType或者它返回false,则意味着iOS应该处理活动。在这种情况下,它可以显示UIAlertController。因此,要在此委托调用中为此活动取消此警告返回true:

func application(application: UIApplication, willContinueUserActivityWithType userActivityType: String) -> Bool { return true }