我希望在单击“不允许”通知后使某些对象不启用并透明。但是,如下图所示,我有一个错误。我该如何解决这个问题?
override func viewDidLoad() {
super.viewDidLoad()
if let savedFirstNotification = savedFirstNotification {
firstDatePicker.date = savedFirstNotification
}
if let savedSecondNotification = savedSecondNotification {
secondDatePicker.date = savedSecondNotification
}
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
if granted {
print("Yep")
} else {
print("No")
self.notEnable()
}
}
}
func notEnable() {
firstDatePicker.isEnabled = false
firstDatePicker.alpha = 0.5
secondDatePicker.alpha = 0.5
secondDatePicker.isEnabled = false
scheludeMeal.alpha = 0.5
scheludeMeal.isEnabled = false
}
答案 0 :(得分:3)
切换isEnabled
的{{1}}属性需要在主线程中完成,因为这是在修改UI,这只能在主线程中进行。您需要使用UIView
将对notEnable
的调用调度到主线程。 DispatchQueue.main.async
的关闭似乎是在后台线程上执行的,因此尝试从该关闭内部更新UI时会看到错误。
requestAuthorization
答案 1 :(得分:1)
您应该在主线程上调用notEnable()
:
DispatchQueue.main.async {
self.notEnable()
}