-2

在我的 iPad 应用程序中,正在连接到 Web 服务。在连接到它的同时,我在标签中向用户显示进度活动指示器和相应的消息(标签在子视图中,并且正在将子视图添加到当前视图)。

在这行代码(调用方法将子视图添加到视图)之后,我正在调用该方法来调用 Web 服务。但是,首先执行 Web 服务调用,然后只显示用户信息子视图。

有什么办法可以说我想“继续显示”警报视图,即使执行继续到下一行代码?

// Calling method to add info/alert subview to current view [self displayUserMessage]; 
// Connect to Web Service [self connectToWebService];
4

2 回答 2

2

我不确定我是否完全理解你的问题。如果您在解释后提供一些代码,也更容易理解......无论如何,我理解的是您正在连接到网络服务并在连接进行时显示一些信息?

请记住,如果您不想挂起您的用户界面,您需要在另一个线程中发送 webService Connection,这样您就可以保持主线程空闲。您可以使用 GCD 执行此操作。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
    [self connectWithWebService];
});

然后根据 Web 服务的架构,您可以使用委托或完成块向用户显示一些消息(信息/警报)。在这种情况下,请记住与 UI 相关的任何内容都应该在主线程上运行。所以正如我之前所说,根据你的架构,你应该做这样的事情

dispatch_async(dispatch_get_main_queue(), ^{
    // Show UI Changes
});

当 webService 方法在后台运行时,UI 应该正确更新。

于 2013-04-19T17:45:01.433 回答
0

NSURLConnection如果您想要异步连接,使用's更容易sendAsynchronousRequest:queue:completionHandler:

您可以在调用它之前显示您的警报并在完成处理程序中将其关闭。

于 2013-04-19T17:49:44.093 回答