我正在开发Iphone应用程序(ios5 + storyboard + arc)。 我有2个ViewControllers A和B.
在A中我有一个按钮。当我按下时,我向服务器异步提交请求(使用AFNetworking),我将使用performSegueWithIdentifier(push not modal)转到View Controller B.
请求完成后,执行请求成功阻止将数据保存到数据库。 (该块在ViewController A中,因为请求是从那里发送的)
有没有办法可以通知ViewController B请求已经完成并在B中执行方法?
我正在寻找的是当请求完成并进入成功块时,我在视图控制器B中运行一个方法,这是加载的视图。
我希望我很清楚。
由于
答案 0 :(得分:13)
要发布通知,请使用以下代码:
[[NSNotificationCenter defaultCenter] postNotificationName:@"Midhun" object:nil];
在通知监听类的viewDidLoad中添加观察者,如:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(performTask:) name:@"Midhun" object:nil];
performTask:
是在观察通知时将调用的方法。
答案 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];
请注意,如果您从其他线程发送通知,则侦听器将在同一个线程上执行。