首页 > 解决方案 > 队列任务完成前 Swift Spinner 消失

问题描述

这让我很头疼。我试图展示一个微调器,然后在执行任务后将其移除。

不幸的是,微调器删除代码在任务完成之前执行。任何帮助,将不胜感激。

DispatchQueue.global(qos: .utility).async { [weak self] in                              // Create a new queue for our networking activity
            guard let self = self else {
                return
            }

            switch airframe{
            case .A_10:
                dcsBIOSConn.configureHawgWaypoint(name: name, lat: latitude!, long: longitude!, elev: elev, tot: timeOnTarget)
            case .F_16:
                dcsBIOSConn.configureWaypoint(lat: latitude!, long: longitude!, elev: elev, aircraft: airframe!)
            case .F_18:
                dcsBIOSConn.configureWaypoint(lat: latitude!, long: longitude!, elev: elev, aircraft: airframe!)
            case .AV_8B:
                dcsBIOSConn.configureWaypoint(lat: latitude!, long: longitude!, elev: elev, aircraft: airframe!)
            default:
                break
            }

            dcsBIOSConn.printMessageQueue()
            print("1. Entering Queue")

            let biosQueue = DispatchQueue(label: "dcs_bios")

            biosQueue.async {
                dcsBIOSConn.sendMessageQueueToDCSBIOS()
            }

            print("2. Finishing Out of Loop")

            // Send the designated coord to the CDU radio.
            DispatchQueue.main.async { [weak self] in                                           // Update the spinner on the main thread.
                self?.removeSpinner()
                //ERProgressHud.sharedInstance.hide()
                print("3. Remove Spinner")
            }
        }

产生这个结果

AAP_PAGE
CDU_CLR
CDU_LSK_7R
CDU_Q
CDU_E
CDU_S
CDU_H
CDU_M
CDU_LSK_3R
CDU_N
CDU_2
CDU_6
CDU_4
CDU_5
CDU_1
CDU_0
CDU_0
CDU_LSK_7L
CDU_E
CDU_0
CDU_5
CDU_5
CDU_5
CDU_3
CDU_4
CDU_5
CDU_0
CDU_LSK_9L
CDU_LSK_5L
CDU_LSK_5R
1. Entering Queue
2. Finishing Out of Loop
3. Remove Spinner
State: Preparing

Objects sent: 0
String was sent to UDP: AAP_PAGE 0

String was sent to UDP: CDU_CLR 1

String was sent to UDP: CDU_CLR 0

String was sent to UDP: CDU_LSK_7R 1

String was sent to UDP: CDU_LSK_7R 0

String was sent to UDP: CDU_Q 1

String was sent to UDP: CDU_Q 0

String was sent to UDP: CDU_E 1

标记为 1,2,3 的文本都在任务开始发送文本之前执行。3.删除文本微调器应该是最后一个。想法?

标签: swift

解决方案


推荐阅读