0

我正在向服务器拨打电话(使用 AFNetworking)。当我得到该数据时,我将它放入一个数组并调用刷新屏幕。到目前为止,一切都很好。但我不知道如何做的是异步调用服务器告诉用户(在一个单元格中)没有要显示的数据。并且当有数据要显示时,去掉“没有要显示的数据”单元格。

使用 ios 6.1,但想支持 ios 5。

4

1 回答 1

1

如果我理解正确,您希望在没有结果时显示“无数据显示”消息,然后在数据可用时替换该消息。

我的方法通常是在我开始加载内容时(即第一次调用服务器时)向用户显示加载指示器(覆盖在表格视图上)。您可以在控制器上设置一个标志来跟踪您当前是否正在加载数据 - 当您开始加载时将其设置为 YES,然后在加载完成时设置为 NO。加载时,您可以简单地不显示表格中的任何单元格(假设您有一些其他显示来向用户显示它正在加载)。例如

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
   if (isLoading) return 0; //Don't display any cells while loading

   if (modelArray.count == 0) return 1; //1 row for the cell indicating there's no data

   return modelArray.count; //1 row for each entry in array
}

当服务器返回数据时,移除加载指示器并刷新表视图数据。

当没有数据返回时,大概您的模型数组将为空。只需在 UITableViewDataSource 中检查这种情况tableView:cellForRowAtIndexPath:,如果数组为空,则返回一个单元格,其中包含指示没有数据的消息,例如

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (modelArray.count == 0)
    {
        return noResultsMessageCell;
    }
    else
    {
        <normal cell dequeueing code>
    }
}
于 2013-07-24T03:03:09.337 回答