向每个视图添加观察者或动态显示视图

时间:2013-07-23 09:48:08

标签: iphone ios objective-c ios4

当我收到远程通知时,我会在应用中在本地发布通知。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    NSLog(@"Received notification: %@", userInfo);
    [[NSNotificationCenter defaultCenter] postNotificationName:@"NEWMESSAGE" object:nil userInfo:userInfo]; }

我已在函数viewWillAppear()中向视图添加了一个观察者,并在viewWillDisappear()中删除了观察者。

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

and
[[NSNotificationCenter defaultCenter] removeObserver:self];

我的问题是我想覆盖在我的应用中使用这些功能的所有* .m文件中的每个viewWillAppear和viewWillDisappear函数。

或者我如何动态地将观察者(如上所述)添加到当前视图中,并在该视图消失时删除观察者。它应该像一个全局动作,只要视图改变观察者在它再次改变时被添加和删除。

这可能吗?如果是的话请指导我。

提前感谢。

1 个答案:

答案 0 :(得分:2)

一些想法:

  • 您可以继承UIViewController,并在子类视图控制器类中实现这些方法。然后,您需要创建所有视图作为此UIViewController的子类。

示例:

//Creating a custom subclass of UIViewController
@interface CustomViewController : UIViewController
@end

@implementation CustomViewController

 - (void)viewWillAppear:(BOOL)animated
{
   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(newMessageReceived:) name:@"NEWMESSAGE" object:nil];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

@end

并创建所有视图控制器作为CustomViewController的子类。