0

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

- (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 函数。

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

这可能吗?如果是这样,请指导我。

提前致谢。

4

1 回答 1

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.

于 2013-07-23T10:16:41.650 回答