【问题标题】:UITableView weird reloadData issueUITableView 奇怪的 reloadData 问题
【发布时间】:2014-01-20 08:29:26
【问题描述】:

我陷入了一个非常奇怪的问题,他们正在做的是调用NSURLConnection sendAsynchronousRequest,我在其中重新加载 tableView,它没有任何问题。当 em 在收到请求响应时站在同一个 ViewController 上时,这种情况可以正常工作。当我调用 sendAsynchronousRequest 并从该 ViewController 移动然后在请求给出响应之前返回到它时,就会出现问题。这次 TableView reloadData 被调用,但在视图上没有做任何事情。我在这个dispatch_async(dispatch_get_main_queue(), ^{}); 中调用reloadData,让它在mainThread 上运行。

在这方面的任何帮助都会很棒。

编辑 1:

这是我到目前为止所获得的。当我启动 NSURLConnection asyncRequest 时,它会保留对当前时间的 tableView 和数组的引用。但是当我从该视图导航然后返回时视图被重新初始化,因此 tableView 和数组有新的引用。因此,当 asyncRequest 调用 tableView ReloadData 时,它会为旧引用的 tableView 而不是现在可见的 tableView 调用 reload,因此不会重新加载 tableView...希望现在您能提供帮助。

【问题讨论】:

  • 你有没有设置断点并检查是否有对 dispatch_asyn 和 cellforrows 的 poper 调用?
  • 看起来您正在重新加载一个 tableview 并显示另一个。
  • 它调用numberOfRowsInSection但不调用cellForRowAtIndexPath..
  • 我的 ViewController 中只有一个 UITableView
  • 当它调用numberOfRowsInSection 时号码是否正确?另外,reloadData 是在异步线程还是主线程上调用的?

标签: ios objective-c uitableview


【解决方案1】:

与其在主线程上重新加载 tableview,不如在获取数据并解析数据后尝试重新加载它。在视图之间切换可能会导致您的 tableview 在数据来自服务器之前重新加载导致空白 tableview,这是由于在主线程上调用某些方法引起的。

编辑:尝试只在 viewdidload 中初始化 tableview 并在从服务器获得响应之后并在其中加载数据之前初始化数组。

【讨论】:

  • 实际上是在 asyncRequest 中上传数据而不是下载数据……一旦数据上传,我必须重新加载 tableView……
  • 好的,这样你就可以在数据上传后重新加载表格视图,即。成功响应来自服务器。
  • 是的,这就是他们在做什么......在请求成功或失败后,我重新加载 tableView,它在站在同一个视图上时工作正常,但是当我更改视图控制器并返回该视图时会出现问题
  • 在viewwillappear中初始化数组可能会出现
  • 那么解决这个问题的方法是什么..?我必须使用该初始化来显示单元格的内容
猜你喜欢
  • 2011-04-06
  • 2011-02-03
  • 1970-01-01
  • 2011-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多