Я пытаюсь понять, делать быстрые действия (3D Touch) для прошивки 9.IOS 9 Быстрые действия (3D Touch)
Я хотел пользователя выбрать один из 4 фильтров, которые должны применяться к изображению, так что если я выберите элемент 1, я поставлю NSUserDefaults.standardUserDefaults() в фильтр, а затем покажу правильное изображение с применением фильтра.
В AppDelete.swift:
func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) {
var filterType:Int
switch (shortcutItem.type) {
...set filterType
}
NSUserDefaults.standardUserDefaults().setInteger(filterType, forKey:"filterType")
NSUserDefaults.standardUserDefaults().synchronize()
}
В ViewController.swift:
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector:"setDefaultFilter", name: UIApplicationWillEnterForegroundNotification, object:nil) // Handle enter from background
setDefaultFilter()
}
func setDefaultFilter() {
filterType = defaults.integerForKey("filterType")
...
imageView.image = filterImage(defaultImage!, filter:filters[filterType])
}
Однако при входе в приложение из меню, он всегда будет показывать последний выбор (не текущий выбор). Если я выберу пункт 1, ничего не произошло. Я выбираю пункт 3, появится пункт 1.
Я также пытаюсь передать параметры через appDelegate, и результат будет таким же. Я считаю, что есть некоторые проблемы с жизненным циклом.
Любые идеи?
UIApplicationDidBecomeActiveNotification, что сделал трюк! Я также попытался передать переменную экземпляра, но это не сработает, пока я не использую UIApplicationDidBecomeActiveNotification. –