我的項目在表格視圖中顯示元素。當用戶單擊一個單元格時,單元格展開以顯示更多信息(如App Store更新選項卡),並且如果用戶點擊該擴展單元格,單元格中引用的元素將在新頁面中打開(同樣,App Store )。然而,該元素必須先使用Alamofire請求下載,然後才能顯示。爲了加快速度,我在單元展開時開始下載元素,因此當用戶決定打開元素時,它可能已經完成下載。使用Alamofire在下載後處理用戶交互時的等待
但是這裏存在我的問題:一些元素很快下載,因此很可能在用戶打開元素時下載(第二次點擊)。但是有些元素要大得多,需要更長時間才能下載(最多6秒)。如果元素還沒有完成下載,我應該如何處理用戶輸入,而且,我應該如何實現它?
最簡單的方法是完全忽略用戶輸入,檢查元素是否每次點擊下載以啓動搜索。然而,忽視用戶以及他們必須以相同的意圖點擊不止一次的感覺是錯誤的。同樣,我在主線程上使用了dispatch_group_wait()
,但它更糟,因爲它阻止了所有輸入。
我想什麼來實現如下:
- 第一次輕觸:開始下載請求,並在一個變量保留它(這已經完成)。我不想在啓動請求的
completionHandler
的SEGUE因爲我們還不知道,如果 第二分:
一個。如果元素已經下載,啓動segue將其打開。
b。如果該元素尚未完成下載,則推遲啓動segue至下載結束。
我知道這個問題是非常大的,所以要縮小它:是否有可能實現上述邏輯?怎麼樣?
太謝謝你了!我知道有一個簡單的方法,但我從錯誤的一面看問題,只關注關閉和Alamofire。我已經爲我以前的嘗試實施了標誌和活動指標,但你的答案是我的謎題中缺少的一部分;)乾杯 –