gpt4 book ai didi

ios - performSegue 延迟

转载 作者:行者123 更新时间:2023-11-28 12:40:14 24 4
gpt4 key购买 nike

我有一个 bar button item 可以转到下一个 view controller。我在 bar button item 上实现了 show segue,它第一次有 2 秒的延迟之后就正常了。

我按如下方式使用了 DispatchQueue 但它仍然执行相同的操作

  @IBAction func addPressed(_ sender: AnyObject) {
DispatchQueue.main.async(execute: {
self.performSegue(withIdentifier: "showDetail",sender: self)
})

}

这是我在第二个 VC 中的内容

override func viewDidLoad(){
super.viewDidLoad()

firstBtn.layer.borderWidth = 3
firstBtn.layer.borderColor = UIColor.white.cgColor

secondBtn.layer.borderWidth = 3
secondBtn.layer.borderColor = UIColor.white.cgColor


do{
let correctSoundUrl: URL = URL(fileURLWithPath: Bundle.main.path(forResource: "btnTap", ofType: "wav")!)
self.goalsTapPlayer = try AVAudioPlayer(contentsOf: correctSoundUrl)
self.goalsTapPlayer.prepareToPlay()
}
catch{}

}

最佳答案

DispatchQueue.main.async 在这里什么都不做,因为如果它是通过按下按钮调用的,它已经在主线程上执行了。

@IBAction func addPressed(_ sender: AnyObject) {
self.performSegue(withIdentifier: "showDetail",sender: self)
}

您的 prepareForSegueviewDidLoad、下一个 Controller 中的 viewWillAppear 可能有问题。

如果您在这些函数中有一些繁重的操作,您或许应该尝试在后台线程上执行它们。

DispatchQueue.global(qos: .background).async {
//Heavy operation
//...
DispatchQueue.main.async {
//Potential update of UI
}
}

在您的情况下,您也许可以尝试在后台执行 audioplayerloading

DispatchQueue.global(qos: .background).async {
do{
let correctSoundUrl: URL = URL(fileURLWithPath: Bundle.main.path(forResource: "btnTap", ofType: "wav")!)
self.goalsTapPlayer = try AVAudioPlayer(contentsOf: correctSoundUrl)
self.goalsTapPlayer.prepareToPlay()
}
catch{}
}

关于ios - performSegue 延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39586785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com