2014-01-20 47 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