Ios 设置userActivity时,是否必须覆盖updateUserActivityState
Ios 设置userActivity时,是否必须覆盖updateUserActivityState,ios,swift,cocoa-touch,uiresponder,nsuseractivity,Ios,Swift,Cocoa Touch,Uiresponder,Nsuseractivity,updateUserActivityState上的文档对我来说有点模糊 子类重写此方法以更新给定用户活动的状态。您应该使用其addUserInfoEntries(from:)方法将表示用户活动的状态添加到NSUserActivity对象中 当状态为dirty时,应将NSUserActivity的needsSave属性设置为true,并在适当的时间调用此方法 因此,在执行以下操作时调用此方法: open override func viewWillAppear(_ animated: Bool)
updateUserActivityState
上的文档对我来说有点模糊
子类重写此方法以更新给定用户活动的状态。您应该使用其addUserInfoEntries(from:)方法将表示用户活动的状态添加到NSUserActivity对象中
当状态为dirty时,应将NSUserActivity的needsSave属性设置为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来填充活动
但是,当我们只设置一次活动而从不更新它时,我们应该这样做吗
还必须始终实现updateUserActivityState吗
如果NSUserActivity对象从未更改,并且在创建时已完全配置,则无需重写UIResponder.updateUserActivityState方法
但是,为了保持一致性和将来的验证(如果您确实使该用户活动对象可变),当响应者链收到更改通知时,应用程序可能仍然希望使用updateUserActivityState来填充活动