簡體   English   中英

如何加快在導航項中啟用“條形按鈕”項的請求?

[英]How can I speed up my request to enabled a Bar Button Item in Navigation Item?

在ViewDidLoad()的第一個ViewController中,有2個操作:

  1. 放置buttonGo.isEnabled = false(buttonGo是條形按鈕項目)
  2. 通過Web服務發出請求,以檢查設備是否被授權。

在單例類委托中檢查設備是否被授權。 它調用:DownloadAuthorize,它具有一個委托方法:updateView()。

如果設備被授權,我將在ViewController中回調委托方法updateView(),此方法使buttonGo.isEnabled = true

一切正常,但是buttonGo幾秒鍾后啟用。 我以這種方式進行調查,在我看來,buttonGo由后台線程啟用。 我嘗試在委托方法中使用view.setNeedsLayout(),view.setNeedsDisplay(),因為我希望加快重繪組件的速度,但是卻遇到類似的錯誤:“此應用程序正在從后台線程修改自動布局引擎從主線程訪問引擎。這可能導致引擎損壞和奇怪的崩潰”

是否可以做一些事情來加快控件的刷新速度?

謝謝

顯然,這樣做是因為代碼正在修改在后台線程或完成處理程序中運行的代碼中的AutoLayout UI元素/約束。 默認情況下,所有完成處理程序都在后台線程中運行。 您需要使用GCD從完成處理程序塊中更新UI元素。

DispatchQueue.main.async { // UI update/changes task here }

在主線程上調用您的方法。

DispatchQueue.main.async { 
       updateView()
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM