等待另一个对象完成工作后,关闭警报视图

时间:2011-08-23 16:06:50

标签: objective-c ios cocoa-touch uiviewcontroller uialertview

我有一个视图控制器,我们称之为HomeViewController,它会弹出一个警报视图,而没有任何按钮说“请等待连接到服务器”。在等待时,视图控制器调用另一个类(ServerConnection)中的方法,该类将数据发送到服务器。

我需要做的是在收到服务器响应后取消该警报,但如果我执行以下操作则无效:

HomeViewController *hvc = [[HomeViewController alloc] init];
[hvc waitAlertCancel];

//note:waitAlertCancel is a method that calls the following line of code:
[waitAlert dismissWithClickedButtonIndex:0 animated:TRUE];

如何从其他班级取消该警报视图,我该怎么办?

2 个答案:

答案 0 :(得分:3)

块非常棒。


如果您需要在事件发生后从另一个类调用一个类中的代码,blocks是完美的解决方案。在块可用之前,你通常使用委托模式来处理这样的设计,这很好,但是在像你这样只需要解除警报的情况下它可能很苛刻。因此,使用块是一个更清洁的解决方案,IMO。

ServerConnection类中创建一个使用块进行回调的方法。

的内容

- (void) connectWithCompletionBlock(void(^))completionBlock;

然后你会像这样调用connectWithCompletionBlock:方法:

[myServerConnection connectWithCompletionBlock: ^ { [waitAlert dismissWithClickedButtonIndex:0 animated:TRUE]; }];

ServerConnection对象收到服务器响应后,您可以让它运行完成块。

答案 1 :(得分:0)

使用NSNotification。让处理服务器请求的对象发布一个完整的通知。让您的家庭视图控制器听取它并做出相应的响应。