【问题标题】:Message users while large table loads加载大型表时向用户发送消息
【发布时间】:2011-05-20 16:11:07
【问题描述】:

我正在处理几个大型 RSS 提要并在 TableView 中显示结果。处理在用户单击相关选项卡后开始。一切正常,但由于处理需要几秒钟,NIB 和表格在处理完成之前不会加载,看起来 iPhone 已经卡住了。我在 NIB 中添加了一个 Activity 指示器,但是因为它在表格准备好显示之前不会加载,所以它看起来太晚了,没有任何用处。

有没有人知道如何在表格构建/加载时向用户显示消息?我曾尝试先加载 UIView 并将表格添加为子视图,但同样,两者似乎都仅在表格准备好后才加载。

感谢指导。

【问题讨论】:

    标签: iphone uitableview sdk rss


    【解决方案1】:

    从您的描述中很难猜出发生了什么,但看起来您的调用不是异步的。以下是您应该在代码中执行的操作:

    1. 使所有调用异步。你说你的手机卡住了。听起来您的请求和响应正在主线程上发生。您可以使用许多库来处理异步调用。 ASIHTTPRequest 举个例子....

    2. 在显示 tableView 之前不要等待数据进来。这是一个设计原则,您尽可能多地加载 UI,以便用户在后台加载数据时可以查看一些内容。你应该做的是初始化一个 NSMutableArray 来保存数据。最初,此数组将不包含任何对象。这是您在数据源方法中使用的数组:使用numberOfRowsInSection 的数组大小并使用cellForRowAtIndexPath 中的数组对象。一旦您的 RSS 提要 XML 进入并被解析,请将其存储在您的数组中并调用 [tableView reloadData]。这样您就不会让您的用户看到一个空白屏幕。 (另一个好的做法是当数组大小为零时,在表格视图中显示一个显示“数据正在加载”或其他内容的单元格。

    3. 当您第一次初始化并加载表格,然后触发这些 RSS 提要请求时,您会在 tableView 上显示活动指示器视图。当 RSS 数据进入并且您的 tableView 重新加载时,停止为指示器设置动画。

    这些是在表格视图中显示非本地数据时应遵循的标准步骤。带来流畅的用户体验。

    就像我之前说的,从您的问题看来,您的调用不是异步的。如果我错了,请纠正我,让我们从那里开始......

    【讨论】:

    • 谢谢希德。这真的很有帮助。我再看看。
    猜你喜欢
    • 1970-01-01
    • 2021-09-10
    • 2021-10-10
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 2017-05-16
    • 2019-07-24
    • 1970-01-01
    相关资源
    最近更新 更多