UiAlert не увольняется при использовании добавленияIOS

Программируем под IOS
Ответить
Anonymous
 UiAlert не увольняется при использовании добавления

Сообщение 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


Подробнее здесь: https://stackoverflow.com/questions/794 ... ction-used
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»