通知传值
第一个UIViewcontroller.h
#import@interface UseNotifi_VCOne :UIViewController @end
UIViewcontroller.m
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. //监听某个通知 //这里需要注意到 : 通知只能是 对象才可用,且该对象必须存在于内存中 /* [NSNotificationCenter defaultCenter] 获取通知的管理 addObserver: 设置通知的监听者 */ //NOTIFICATION_CHANHECONTENT 在 QFUseNotifi_VCTwo中 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(contentChange:) name:NOTIFICATION_CHANGECONTENT object:nil]; } -(void)dealloc { // 通知 // | // \ / // 对象-->监听<--通知 // 将当前对象监听的所有通知移除 [[NSNotificationCenter defaultCenter] removeObserver:self]; //移除指定name关联的通知 [[NSNotificationCenter defaultCenter] removeObserver:self name:NOTIFICATION_CHANGECONTENT object:nil]; } //收到通知后,触发的方法,然后做相应的处理 -(void)contentChange:(NSNotification *)notification { //userInfo : 通知里捆绑的数据 self.detailLab.text = [NSString stringWithFormat:@"“%@” 发来贺电",[notification.userInfo objectForKey:@"ChangeContent"]]; } #pragma mark - 用户交互(push第二个控制器UseNotifi_VCTwo) - (IBAction)gotoPostNotifiVC:(id)sender { UseNotifi_VCTwo *vc = [[UseNotifi_VCTwo alloc] init]; [self.navigationController pushViewController:vc animated:YES]; }
第二个UIviewController( UseNotifi_VCTwo.h)
#import/* 通知的发送者 xxxxxxxxxxxxxxxxxxxxxxxxxx */ //定义 通知的 标识,根据需要选择将 #define 定义在具体的文件中,如.pch、.h等 #define NOTIFICATION_CHANGECONTENT @"Notification_ChangeContent"//通知的标识 @interface UseNotifi_VCTwo : UIViewController @end
第二个UIviewController( UseNotifi_VCTwo.m)
@interface UseNotifi_VCTwo () @property (weak, nonatomic) IBOutlet UITextField *nameTF; @end @implementation UseNotifi_VCTwo - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization self.title = @"发送通知的控制器"; } return self; } - (void)viewDidLoad { [super viewDidLoad]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } #pragma mark - 用户交互(post回去) - (IBAction)postNotificationAction:(id)sender { NSString *uname = self.nameTF.text; NSDictionary *ChangeContent = [NSDictionary dictionaryWithObject:uname forKey:@"ChangeContent"]; //发送一个通知 /* [NSNotificationCenter defaultCenter] 获取全局通知对象 postNotificationName: 通知的标识,必须设置 object: 用于通知的过滤,将通知捆绑一个obj,一般设为nil userInfo: 发送通知所捆绑的用户数据 */ [[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_CHANGECONTENT object:nil userInfo:ChangeContent]; [self.navigationController popViewControllerAnimated:YES]; } @end