Я реализую всплывающее сообщение о предупреждении при синхронизации данных. Он исчезает, когда процесс синхронизации завершен, как и ожидалось, но когда я добавил кнопку «Отмена» во всплывающее окно, всплывающее окно не будет отклонено, если не будет активировано пользователем. Кроме того, когда присутствует кнопка, представленное представление о том, что он больше не является предупреждением (согласно проверке кода ниже), но она показана и активна для пользователя. Когда я опускаю кнопку, проверка кода ниже указывает, что это представленное представление. Есть идеи? < /P>
DispatchQueue.main.async {
let alert = UIAlertController(title: "Syching Data", message: "This may take a few seconds...", preferredStyle: .alert)
//alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil)) // this prevents dismiss below
alert.addAction(UIAlertAction(title: "Cancel", style: .default, handler: { (action) in
alert.dismiss(animated: true, completion: nil)}))
print("** PRESENT Alert")
self.present(alert, animated: true, completion: nil)
//DispatchQueue.global().async { // runs sync in background - NOT needed
Task {
deviceSyncTime = 0 // temporary bypass
let zoneid = detZoneID(zName: fileC, zonesIn: privateZones)
let chkDone = await fetchNewRecords(starttime: deviceSyncTime, db: db, zonename: zoneid)
actLog(newPrint: "ManageF Cloud Records fetched:" + String(describing: chkDone.count))
let privateSync = await processSync3(db: db, recordA: recordsLoad, cloudStruct: chkDone)
processTrigger = "On"
updateFileZ3REM(newRecordUps: privateSync, dbase: db, inArray: recordsLoad) {result in
if result == true {
print("manageF, updateFileZ result= true")
DispatchQueue.main.async {
if self.presentedViewController == alert {
alert.dismiss(animated: true, completion: nil)
print("** DISMISS called") // This executes when Cancel button is omitted
} else {
print("** ALERT is not presented controller") // This print is executed when Cancel button is present
}
print("** Trying to dismiss alert controller")
alert.dismiss(animated: true, completion: nil) // This does not execute when Cancel button is present
} // end main async
if let findex = fileToBeUpdated.firstIndex(of: fileNN) {
fileToBeUpdated.remove(at: findex)
}
} else {
print("manageF, updateFileZ result= NOT true")
}
}
print("end task")
} //end task
print("end async op")
//} // async
print("end main thread")
} // main thread
Подробнее здесь: https://stackoverflow.com/questions/794 ... ction-used
UiAlert не увольняется при использовании добавления ⇐ IOS
Программируем под IOS
-
Anonymous
1739024067
Anonymous
Я реализую всплывающее сообщение о предупреждении при синхронизации данных. Он исчезает, когда процесс синхронизации завершен, как и ожидалось, но когда я добавил кнопку «Отмена» во всплывающее окно, всплывающее окно не будет отклонено, если не будет активировано пользователем. Кроме того, когда присутствует кнопка, представленное представление о том, что он больше не является предупреждением (согласно проверке кода ниже), но она показана и активна для пользователя. Когда я опускаю кнопку, проверка кода ниже указывает, что это представленное представление. Есть идеи? < /P>
DispatchQueue.main.async {
let alert = UIAlertController(title: "Syching Data", message: "This may take a few seconds...", preferredStyle: .alert)
//alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil)) // this prevents dismiss below
alert.addAction(UIAlertAction(title: "Cancel", style: .default, handler: { (action) in
alert.dismiss(animated: true, completion: nil)}))
print("** PRESENT Alert")
self.present(alert, animated: true, completion: nil)
//DispatchQueue.global().async { // runs sync in background - NOT needed
Task {
deviceSyncTime = 0 // temporary bypass
let zoneid = detZoneID(zName: fileC, zonesIn: privateZones)
let chkDone = await fetchNewRecords(starttime: deviceSyncTime, db: db, zonename: zoneid)
actLog(newPrint: "ManageF Cloud Records fetched:" + String(describing: chkDone.count))
let privateSync = await processSync3(db: db, recordA: recordsLoad, cloudStruct: chkDone)
processTrigger = "On"
updateFileZ3REM(newRecordUps: privateSync, dbase: db, inArray: recordsLoad) {result in
if result == true {
print("manageF, updateFileZ result= true")
DispatchQueue.main.async {
if self.presentedViewController == alert {
alert.dismiss(animated: true, completion: nil)
print("** DISMISS called") // This executes when Cancel button is omitted
} else {
print("** ALERT is not presented controller") // This print is executed when Cancel button is present
}
print("** Trying to dismiss alert controller")
alert.dismiss(animated: true, completion: nil) // This does not execute when Cancel button is present
} // end main async
if let findex = fileToBeUpdated.firstIndex(of: fileNN) {
fileToBeUpdated.remove(at: findex)
}
} else {
print("manageF, updateFileZ result= NOT true")
}
}
print("end task")
} //end task
print("end async op")
//} // async
print("end main thread")
} // main thread
Подробнее здесь: [url]https://stackoverflow.com/questions/79423279/uialert-will-not-dismiss-when-addaction-used[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия