Документы на updateUserActivityState
немного расплывчаты для меня.
https://developer.apple.com/documentation/uikit/uiresponder/1621095-updateuseractivitystate
Подклассы переопределяют этот метод для обновления состояния заданной активности пользователя.Вы должны добавить состояние, представляющее активность пользователя, в объект NSUserActivity, используя его метод addUserInfoEntries (from :).
Когда состояние грязное, следует установить для свойства needsSave 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()
}