【问题标题】:iPhone help on using XMLParser and UI while waiting for resultsiPhone 帮助在等待结果时使用 XMLParser 和 UI
【发布时间】:2010-11-14 17:36:45
【问题描述】:

有人可以提供一些关于在解析 SOAP 消息时处理 iPhone UI 和处理的最佳方式的指导吗?这是上下文:

  • 我有一个应用程序,允许用户(从汽车列表中)选择他们有兴趣查看的汽车。
  • 当他们挑选汽车时,我推送一个显示汽车详细信息类别的 carDetails 视图控制器。当我初始化 carDetails 时,我分配/执行另一个名为 getCarData 的类,该类包含 SOAP 和 XMLParser 方法,用于从 Web 服务检索和加载所有汽车详细信息。
  • 目前,getCarData 类在完成处理之前将控制权返回给 carDetails(我相信是由于 XMLParser 的异步特性)
  • 但我需要先加载 getCarData 中的数据,然后才能允许用户在 carDetails 中选择任何向下钻取类别信息(即内饰、发动机等)

我的问题是;

  • 在加载数据之前处理等待过程的最佳方式是什么?
  • 我已经看到一些关于触发单独线程的论坛问题,因此我不会占用 UI,但我确实希望用户等待(如有必要)直到加载数据。那么我应该创建另一个线程吗?我是否应该只显示一个隐藏主窗口的进度窗口,直到加载数据?
  • 检查数据是否已完成加载,如果没有,显示活动/进度视图的最佳方法是什么?换句话说,我应该在 carDetails、getCarData 还是 AppDelegate 中处理它?

很抱歉有多个问题和(可能)菜鸟问题,但我似乎找不到很多可以使用的讨论或代码示例。

提前致谢 - 迈克

【问题讨论】:

    标签: iphone xml-parsing


    【解决方案1】:

    Apple 在这种情况下使用的典型协议是定义一个在处理/加载完成时要调用的方法。该方法可以这样调用:

    -(void)carDetailsDidFinishLoading
    

    在允许用户在您的界面中选择内容之前,您可以等待调用此方法。保持一切禁用,直到触发。

    由于您实际上是在冻结界面,因此您可能希望显示一个加载符号 UIActivityIndi​​cator,以让用户知道您的应用还没有冻结。

    【讨论】:

    • 谢谢 Dan,我肯定会使用活动指示器,但是您建议将对象和方法(viewController/carDetails 或 XMLParser/getCarData)放在哪个类中,以及您会检查什么以确保数据已加载。我想我可以检查我正在加载的数组是否有意义,或者可能是解析器回调。再次感谢您抽出宝贵时间。 - 迈克
    • 我会一直禁用 UI(禁用所有按钮),直到调用 carDetailsDidFinishLoading 方法。使用 XMLParser 的 -parserDidEndDocument 方法知道处理何时结束。
    猜你喜欢
    • 2016-04-28
    • 2019-08-23
    • 2014-08-08
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    相关资源
    最近更新 更多