5

我正在开发一个 Iphone 应用程序(ios5 + 故事板 + arc)。我有 2 个 ViewController A 和 B。

在 AI 中有一个按钮。当按下时,我正在向服务器异步提交请求(使用 AFNetworking),我将使用 performSegueWithIdentifier(推送非模态)转到视图控制器 B。

当请求完成时,它会执行一个请求成功的块,将数据保存到数据库中。(该块在 ViewController A 中,因为请求是从那里发送的)

有没有办法可以通知 ViewController B 请求已完成并在 B 中执行方法?

我正在寻找的是,当请求完成并进入成功块时,我在视图控制器 B 中运行一个方法,该方法是加载的视图。

我希望我很清楚。

谢谢

4

2 回答 2

14

要发布通知,请使用以下代码:

[[NSNotificationCenter defaultCenter] postNotificationName:@"Midhun" object:nil];

在通知监听类的 viewDidLoad 中添加如下观察者:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(performTask:) name:@"Midhun" object:nil];

performTask:是观察到通知时将调用的方法。

请参考NSNotification 类参考

于 2012-10-31T11:45:43.500 回答
1

第一个选项是在某处存储对视图控制器 B 的引用(如应用程序委托中的示例)并使用它来运行方法。

第二种是通过 发送通知[NSNotificationCenter defaultCenter],因此控制器 B 在某处设置了一个通知的侦听器(viewDidLoad 可能是一个好地方):

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(finished:) name:@"requestfinishes" object:nil];

控制器 A 发送它:

[[NSNotificationCenter defaultCenter] postNotificationName:@"requestfinishes" object:nil userInfo:nil];

请注意,如果您从不同的线程发送通知,则侦听器将在同一线程上执行。

于 2012-10-31T11:50:06.460 回答