设置用户攻击时,我们必须覆盖UpdateUserActivityState



updateUserActivityState上的文档对我来说有点模糊。

子类覆盖此方法以更新给定用户活动的状态。您应该使用其adduserInfoentries(来自:)方法。

当状态肮脏时,您应该将nsuseractivity的需求属性设置为true,并且该方法将在适当的时间调用。

因此,当我们这样做时,此方法被称为:

open override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.userActivity?.needsSave = true
}

,我们可以相应地更新活动:

override func updateUserActivityState(activity: NSUserActivity) {
  activity.addUserInfoEntriesFromDictionary(someInfo)
  super.updateUserActivityState(activity)
}

但是,当我们只设置一次活动而从不更新一次时,我们也应该始终必须实现updateUserActivityState

例如,在viewDidLoad中设置活动一次时:

override open func viewDidLoad() {
    super.viewDidLoad()
    let activity = NSUserActivity(activityType: "com.myApp")
    activity.title = "Viewing"
    activity.userInfo = ["myApp.item.key": ["Some", "Things"]]
    self.userActivity = activity
    self.userActivity?.becomeCurrent()
}

但是,当我们只设置一次活动而从不更新一次时,我们应该应该 也总是必须实现UpdateUseractivityState?

如果nsuseractivity对象永远不会更改,并且在创建时已完全配置,则无需覆盖uiresponder.updateuseractivitystate方法。

但是,为了保持一致性和对未来的影响(如果您确实使该用户活动对象变得可变(,则该应用程序可能仍希望使用UpdateUserActivityState在通知响应者链时填写该活动。

相关内容

  • 没有找到相关文章

最新更新