iOS中通知中心(实例)

通知中心的使用有3个步骤:

添加观察者;
监听事件;
移除观察者.

写属性

#import "ViewController.h"
@interface ViewController ()
- (IBAction)postNotification:(id)sender; //按钮关联方法
@property (strong, nonatomic) IBOutlet UITextField *textField;

@end

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    //监听输入框内容改变, 添加观察者
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChange:) name:UITextFieldTextDidChangeNotification object:self.textField];
}

输入框文字改变的监听方法
- (void)textChange:(NSNotification *)noti {
    //当输入框的内容变化时, 打印
    NSLog(@"- _ - !!");
}

- (void)dealloc
{
    //移除观察者
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChangeNotification object:self.textField];
}
 
  

另外是发送通知, 接收通知

 
  
- (IBAction)postNotification:(id)sender {
    //点击按钮, 触发事件, 发送通知
    
    //NSNotificationCenter, 通知中心, 单例
    //name: 通知名字, 标识符作用, 只用名字匹配才能够接收到这条通知
    //object: 一般为空, 只有个别情况才会赋值
    //userInfo: 用来传参数
    [[NSNotificationCenter defaultCenter] postNotificationName:@"kTrafficOfHenan" object:nil 
userInfo:@{@"news": @"balabala"}];

}
然后在别的页面接收通知
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)
launchOptions {
    // Override point for customization after application launch.
    
    //接收通知, 重要的是通知名字(name)保持一致,才能正确地接收到通知
   
    //接收通知
    //注册观察者
    //observer: 观察者
    //selector: 方法
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveTraffic:) 
name:@"kTrafficOfHenan" object:nil];
    
    return YES;
}
接收到通知后, 触发方法
- (void)receiveTraffic:(NSNotification *)noti {
    NSLog(@"%@", noti.userInfo);  //此处打印的 noti.userInfo 是发通知的 userInfo(字典)
}

移除观察者

- (void)dealloc
{
    //当观察者不需要的时候
    //移除观察者
    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"kTrafficOfHenan" object:nil];
}


你可能感兴趣的:(iOS技术)