初始加载中的SwiftSpinner无法正常工作

时间:2019-04-08 14:25:10

标签: ios swift

viewDidLoad上调用SwiftSpinner后,Swift微调器不起作用

请在下面找到我正在使用的代码,

override func viewDidLoad() {
        super.viewDidLoad()
            DispatchQueue.global(qos: .background).async {
                self.basicSync {(isSynced) in
                     DispatchQueue.main.async {
                         SwiftSpinner.hide()
                     }
                }
            }
            DispatchQueue.main.async {
                SwiftSpinner.show("Syncing")
            }
}

public func basicSync(completion: @escaping (Bool) -> ()) {
        //Sync related work
        completion("true")
}

我找不到在初始加载时调用Swift微调器的方法

我使用SwiftSpinner尝试过的一些方法。从上面的代码中显示

  1. 要致电, SwiftSpinner.show("Syncing")

  2. 要在主线程内称呼它

 DispatchQueue.main.async {
          DispatchQueue.main.async {
                SwiftSpinner.show("Syncing")
            }
          }
  1. 当我这样写的时候,我能够实现它,
DispatchQueue.main.async {
                DispatchQueue.main.async {
                    DispatchQueue.main.async {
                        SwiftSpinner.show("Syncing")
                    }
                }
            }

但是我不认为这是正确的编码标准,对Swift和编码技术来说是新的

2 个答案:

答案 0 :(得分:0)

尝试将其添加到

  

viewdidappear

答案 1 :(得分:0)

我以前遇到过此问题,您需要执行以下操作

func delay(seconds: Double, completion: @escaping () -> ()) {
    let popTime = DispatchTime.now() + Double(Int64( Double(NSEC_PER_SEC) * seconds )) / Double(NSEC_PER_SEC)
    DispatchQueue.main.asyncAfter(deadline: popTime) {
        completion()
    }
}

然后视图中确实加载了

override func viewDidLoad() {
    super.viewDidLoad()
    delay(seconds: 0.5) {
       SwiftSpinner.show("Syncing")
    }
}

就这样:D