2014-01-20 51 views
-1

我有UISearchBarDisplayController的tableView。下面的代碼是從網絡服務器獲取記錄,並顯示tableview單元格的每一個工作正常。但什麼時候會滾動3或5次向下和向上通過我會去點擊搜索欄它會崩潰崩潰報告NSLog不會打印任何東西。爲什麼在重新加載後崩潰UISearchBar TableView

記得我試過NSZombie,突破點,例外點等,但沒有什麼幫助。

重要的問題:

如何從網絡服務器獲取數據後,將數據加載到tableview。因爲tableview委託方法在從服務器獲取數據之前被調用。

DataFetchController *getDataFetch=[[DataFetchController alloc]init]; 
    //getleadFetch.delegate=self; 
    [getDataFetch beginTaskWithCallbackBlock:^(NSArray *mm){ 


     [self.tableView reloadData];//if i comment this line the UISearchBar not crashes 


    }]; 
+1

有一點需要確認的是,您正在主線程(UI)上調用'[self.tableView reloadData]'。如果這是您唯一的問題,無法從您發佈的內容中分辨出來。 – XJones

回答

0

在主線程中更新tableview數據不會崩潰。

dispatch_async(dispatch_get_main_queue(), ^{ 

     [self.tableView reloadData]; 

    }); 
0

加載數據讀取之前的tableview完成會明顯導致崩潰。因此爲了避免這一點,我們需要知道數據提取何時完成。 這可以很容易地從你的sql apis獲得,當提取完成時返回一個錯誤代碼。您可以通過它來確定是否完成抓取。順序地,您可以提供重新載入您的表視圖命令。 希望它有幫助!

+0

「在數據提取完成之前加載tableview顯然會導致崩潰」 - 不一定。這取決於他的委託方法中的代碼。他們可能只是對一個無效的對象進行調用,而這個對象默默地導致該表看起來是空的(沒有崩潰)。 – occulus