由RootViewController 跳到DetailViewController 控制器,再由DetailViewController控制器回传值到RootViewController里面 并展示
首先要在RootViewController 里面注册通知
#import "RootViewController.h"
#import "DetailViewController.h"
@interface RootViewController ()
@end
@implementation RootViewController
- (void)viewDidLoad {
[super viewDidLoad];
//注册通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(ChangeNameNotification:) name:@"ChangeNameNotification" object:nil];
UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom];
button.backgroundColor=[UIColor blueColor];
button.frame=CGRectMake(100, 100, 40, 20);
[button addTarget:self action:@selector(Push:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
-(void)Push:(UIButton *)sender{
//跳转控制器
DetailViewController *detailVC=[[DetailViewController alloc] init];
[self.navigationController pushViewController:detailVC animated:YES];
}
-(void)ChangeNameNotification:(NSNotification*)notification{
//获得由通知回传到的值
UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(100, 300, 40, 60)];
label.backgroundColor=[UIColor grayColor];
NSDictionary *nameDictionary = [notification userInfo];
label.text = [nameDictionary objectForKey:@"name"];
[self.view addSubview:label];
}
-(void)dealloc{
//移除通知
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
在DetailViewController 进行传值
#import "DetailViewController.h"
@interface DetailViewController ()
@end
@implementation DetailViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor=[UIColor redColor];
}
-(void)viewDidDisappear:(BOOL)animated{
[super viewDidDisappear:animated];
//传值
//此代码写在点击回调的点击事件里面去实现
[[NSNotificationCenter defaultCenter] postNotificationName:@"ChangeNameNotification" object:nil userInfo:@{@"name":@"20"}];
[self dismissViewControllerAnimated:YES completion:nil];
}