我试图了解为 iOS 9 执行快速操作(3D 触摸)。
我希望用户选择 4 个过滤器中的 1 个应用于图像,所以如果我选择第 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 传递参数,结果是一样的。我认为生命周期存在一些问题。
有任何想法吗?