【问题标题】:UITableView delegate fires NSURLConnection delegateUITableView 委托触发 NSURLConnection 委托
【发布时间】:2023-04-11 07:00:01
【问题描述】:

我通过 NSURLConnction 从服务器获取数据,并希望从获取的数组中填充表格视图。数据出现在 NSURLConnection 委托方法的日志中,但我意识到 UITableView 委托方法(DM)的numberOfRowsInSection

之前触发
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {}

NSURLConnection 的 DM。这给我带来了一个问题,因为即使很难我得到正确返回的数据行数总是0(零)..我该如何解决这个问题请分享任何想法..谢谢

【问题讨论】:

  • 调用 [tableView reloadData];在 -connection:didReceiveData: 结束时
  • @Moxy 谢谢。你也可以给出答案。它奏效了

标签: ios uitableview nsurlconnection


【解决方案1】:

didRecieveData 可能会被多次调用,但并不表示已获取所有数据。你应该在你的类上实现一个私有属性,例如;

@property (nonatomic,retain) NSMutableData tableData;

在你的 didRecieveData 上;

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
   [self.tableData appendData:data];
}

之后,当您的连接关闭时

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    // use tableData and refresh table...
    [self.tableView reloadData];
}

【讨论】:

    【解决方案2】:

    您需要在-connection:didReceiveData: 末尾调用[tableView reloadData]; 以更新您的表格视图。

    编辑:巴尔图是对的! 你需要在-connectionDidFinishLoading:末尾调用它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多