2014-09-03 52 views
0

因此,當用戶選擇一行時,出於性能原因,我將選擇放在另一個線程上。當我將它從主線程中取出時,該行將被取消幾秒鐘,並被推送到下一個視圖。當行被取消選擇並從主線程中取出時,用戶可以選擇再次快速點擊該行,並再次強制應用程序崩潰。所以我的問題是如何取消選擇didSelectRowAtIndexPath方法中的表格行上的用戶交互?現在,請確認我不希望在選中一行之前禁用用戶交互。我只想在行被選中後禁用單元格上的用戶交互。謝謝!當didSelectRowIndexPathRow被調用時禁止用戶交互

+0

我建議實例級'布爾'(類似'processingRow'),並在你點擊一行時啓用它。然後,當後臺線程結束時,禁用它。使它只要啓用,就不能選擇另一行(或同一行,或者你希望它工作)。 – Stonz2 2014-09-03 14:57:22

+0

因此,你的說法使得單元對象的範圍是全局的,所以我可以調用'processingRow'方法並在'processingRow'方法中禁止用戶交互? – wayon 2014-09-03 15:02:55

+0

不,我要說的是添加一個知道你是否正在處理的'bool'。我想如果你需要一次處理多行並且只想在處理時禁用單行,你可以爲每行創建一個'bool'數組,或者保存一個'indexPath'對象數組,在開始處理時添加當前的'indexPath',並在完成時將其刪除,因此如果在選擇行時您的'indexPath'已經存在於該數組中,則不要對其執行任何操作。 – Stonz2 2014-09-03 15:28:42

回答

0

使變量實例NSIndexPath selectedPath;

添加

[[self.tableView cellForRowAtIndexPath:indexPath] setUserInteractionEnabled:NO]; 
selectedPath = indexPath; 

到您的didSelectRowAtIndexPath方法和performSegueWithIdentifier(假設你使用故事板)添加

[[self.tableView cellForRowAtIndexPath:self.selectedPath] setUserInteractionEnabled:YES]; 
相關問題