使用Tableview在ios中告诉用户,最近对服务器的调用未获取任何数据

使用Tableview在ios中告诉用户,最近对服务器的调用未获取任何数据,ios,asynchronous,uitableview,Ios,Asynchronous,Uitableview,我正在(通过AFNetworking)给服务器打电话。当我得到数据时,我将其放入一个数组中,并调用刷新屏幕。到目前为止,一切顺利。但我不确定如何做的是对服务器的异步调用告诉用户(比如说,在一个单元格中)没有数据可显示。当有数据显示时,去掉“无数据显示”单元格 使用ios 6.1,但希望支持ios 5。如果我理解正确,您希望在没有结果时显示“无数据显示”消息,然后在数据可用时替换该消息 我的方法通常是在开始加载内容时(即首次调用服务器时)向用户显示加载指示器(覆盖在表视图上)。您可以在控制器上设置

我正在(通过AFNetworking)给服务器打电话。当我得到数据时,我将其放入一个数组中,并调用刷新屏幕。到目前为止,一切顺利。但我不确定如何做的是对服务器的异步调用告诉用户(比如说,在一个单元格中)没有数据可显示。当有数据显示时,去掉“无数据显示”单元格


使用ios 6.1,但希望支持ios 5。

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

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

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

当没有返回数据时,您的模型数组可能是空的。只需在UITableViewDataSource中的
表视图:cellforrowatinedexpath:
中检查这种情况,如果数组为空,则返回一个单元格,并显示一条消息,指示没有数据,例如

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (modelArray.count == 0)
    {
        return noResultsMessageCell;
    }
    else
    {
        <normal cell dequeueing code>
    }
}
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
如果(modelArray.count==0)
{
返回noResultsMessageCell;
}
其他的
{
}
}

您是否只向服务器打了一次电话?或者每个单元格代表对服务器的单独调用?当第二个单元格还在等待响应时,你可能会说第一个单元格返回了数据?我正在考虑这样做。首先,我不希望在下载数据时有一个单元格显示“无结果”之类的内容。但要做到这一点却非常困难。第二,也是更重要的一点,一旦你创建了一个表示不再有数据的单元格,你就必须去掉这个单元格吗?我已经更新了我的答案——基本上你可以有条件地返回“无结果”单元格或正常的单元格列表,但不能同时返回这两个单元格。您可以使用
tableView:numberOfRowsInSection:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (modelArray.count == 0)
    {
        return noResultsMessageCell;
    }
    else
    {
        <normal cell dequeueing code>
    }
}