请求完成后,将通知发送到另一个视图控制器

时间:2012-10-31 11:41:21

标签: objective-c ios uiviewcontroller objective-c-blocks

我正在开发Iphone应用程序(ios5 + storyboard + arc)。 我有2个ViewControllers A和B.

在A中我有一个按钮。当我按下时,我向服务器异步提交请求(使用AFNetworking),我将使用performSegueWithIdentifier(push not modal)转到View Controller B.

请求完成后,执行请求成功阻止将数据保存到数据库。 (该块在ViewController A中,因为请求是从那里发送的)

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

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

我希望我很清楚。

由于

2 个答案:

答案 0 :(得分:13)

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

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

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

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

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

请参阅NSNotification Class Reference

答案 1 :(得分: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];

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