Ios UIDatePicker setEnabled只能从主线程使用
我希望某些对象在单击“不允许”通知后变为未启用和透明。但是,我有一个错误,如下图所示。我怎样才能解决这个问题Ios UIDatePicker setEnabled只能从主线程使用,ios,swift,datepicker,notifications,Ios,Swift,Datepicker,Notifications,我希望某些对象在单击“不允许”通知后变为未启用和透明。但是,我有一个错误,如下图所示。我怎样才能解决这个问题 override func viewDidLoad() { super.viewDidLoad() if let savedFirstNotification = savedFirstNotification { firstDatePicker.date = savedFirstNotification } if let savedSe
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
}
切换
UIView
的isEnabled
属性需要从主线程完成,因为这会修改UI,而这只能从主线程进行。您需要使用DispatchQueue.main.async
将对notEnable
的调用分派到主线程。requestAuthorization
的关闭似乎是在后台线程上执行的,因此在尝试从该关闭内部更新UI时会出现错误
center.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
if granted {
print("Yep")
} else {
print("No")
DispatchQueue.main.async{
self.notEnable()
}
}
}
切换
UIView
的isEnabled
属性需要从主线程完成,因为这会修改UI,而这只能从主线程进行。您需要使用DispatchQueue.main.async
将对notEnable
的调用分派到主线程。requestAuthorization
的关闭似乎是在后台线程上执行的,因此在尝试从该关闭内部更新UI时会出现错误
center.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
if granted {
print("Yep")
} else {
print("No")
DispatchQueue.main.async{
self.notEnable()
}
}
}
您应该在主线程上调用
notEnable()
:
DispatchQueue.main.async{
self.notable()
}
您应该在主线程上调用notEnable()
:
DispatchQueue.main.async{
self.notable()
}
任何UI更改都必须发生在主线程中。任何UI更改都必须发生在主线程中。整个函数都需要从主线程调用,因为其中的所有代码都在修改UI。简单地将其中的第一条语句分派到主线程并不能解决问题。整个函数需要从主线程调用,因为其中的所有代码都在修改UI。简单地将其中的第一条语句分派到主线程并不能解决问题。