标签:uinavigationcontroll 点击第二页按钮 传标题title到第一页成为第一页标题
深刻理解代理模式
将第一页设为第二页的代理,通过代理完成将第二页的按钮按钮颜色改变,按钮名称传到第一页作为第一页的标题
没有tag怎么找到你创建的试图控制器
在第二页压栈的时候将当前页(即导航栏控制器UINavigationController的根视图控制器此处我将第一页设为根)设为第二页的代理,这样就指定了第二页(指定的)的代理为第一页
第一种:因为已设置第一页为第二页的代理,
在第二页.m文件中写 First * fir =(First *) self.delegate];
第二种:通过navigation的属性viewcontroller获取导航栏所有的控制器,返回值是一个数组,这个数组array【0】的第一个元素就是导航栏的根视图控制器,
UIViewController *vc=self.navigationController.viewControllers[0];
#import "Second.h"
#import "HeadFile.h"
@implementation Second
{
NSArray * _arrayForTitile ;
}
- (void)viewDidLoad{
[super viewDidLoad];
self.view.backgroundColor = [UIColor greenColor];
[self _loadData];
}
#pragma mark - _loadData
- (void)_loadData{
// 标签文字存入数组
_arrayForTitile = @[@"第1页",@"第2页",@"第3页",@"第4页"];
// 创建4个按钮
for (int i = 0; i < 4 ; i++) {
UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.backgroundColor = [UIColor blueColor];
CGRect frame = CGRectMake(self.view.frame.size.width/2.0-40, self.view.frame.size.height/2.0-100 + 50*i , 80, 35);
btn.frame = frame;
[btn setTitle:_arrayForTitile[i] forState:UIControlStateNormal];
[btn setTitleColor:[UIColor lightGrayColor] forState:UIControlStateHighlighted];
[btn addTarget:self action:@selector(changeColorAndTitle:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
btn.tag = i +100;
}
}
#pragma mark - changeColorAndTitle:
- (void)changeColorAndTitle:(UIButton *)btn{
// 创建4个按钮
btn.backgroundColor = [UIColor redColor];
for (int i = 0 ; i < 4; i++) {
UIButton * button = (UIButton *)[self.view viewWithTag:i+100];
if (button.tag != btn.tag) {
button.backgroundColor = [UIColor blueColor];
}
}
// 获取代理fir
First * fir = (First *)self.delegate;
// 通过代理改变值
[fir changeTitle:btn.titleLabel.text];
[self.navigationController popViewControllerAnimated:YES];
}
@end
#import "First.h"
#import "HeadFile.h"
@implementation First
- (void)viewDidLoad{
[super viewDidLoad];
// 初始化按钮
self.view.backgroundColor = [UIColor blueColor];
self.title = @"123124";
UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.backgroundColor = [UIColor brownColor];
btn.frame = CGRectMake(0, 0, 80, 35);
btn.center = self.view.center;
[btn setTitle:@"下一页" forState:UIControlStateNormal];
[btn setTitleColor:[UIColor lightGrayColor] forState:UIControlStateHighlighted];
[self.view addSubview:btn];
[btn addTarget:self action:@selector(push) forControlEvents:UIControlEventTouchUpInside];
}
#pragma mark - push
- (void)push{
Second * sec = [[Second alloc]init];
sec.delegate = self;
[self.navigationController pushViewController:sec animated:YES];
}
#pragma mark - changeTitle
- (void)changeTitle:(NSString *)title{
self.title = title;
}
@end
#import "AppDelegate.h"
#import "HeadFile.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 设置跟控制器,设置导航栏根控制器
First * first = [[First alloc]init];
UINavigationController * nv = [[UINavigationController alloc]initWithRootViewController:first];
self.window.rootViewController = nv;
return YES;
}
UINavigationController导航栏,点击第二页按钮,传标题title到第一页成为第一页标题UINavigationController导航栏,点击第二页按钮,传标题title到第一页成为第一页标题UINavigationController导航栏,点击第二页按钮,传标题title到第一页成为第一页标题UINavigationController导航栏,点击第二页按钮,传标题title到第一页成为第一页标题UINavigationController导航栏,点击第二页按钮,传标题title到第一页成为第一页标题UINavigationController导航栏,点击第二页按钮,传标题title到第一页成为第一页标题UINavigationController导航栏,点击第二页按钮,传标题title到第一页成为第一页标题UINavigationController导航栏,点击第二页按钮,传标题title到第一页成为第一页标题UINavigationController导航栏,点击第二页按钮,传标题title到第一页成为第一页标题UINavigationController导航栏,点击第二页按钮,传标题title到第一页成为第一页标题UINavigationController导航栏,点击第二页按钮,传标题title到第一页成为第一页标题UINavigationController导航栏,点击第二页按钮,传标题title到第一页成为第一页标题UINavigationController导航栏,点击第二页按钮,传标题title到第一页成为第一页标题UINavigationController导航栏,点击第二页按钮,传标题title到第一页成为第一页标题UINavigationController导航栏,点击第二页按钮,传标题title到第一页成为第一页标题UINavigationController导航栏,点击第二页按钮,传标题title到第一页成为第一页标题
UINavigationController导航栏,点击第二页按钮,传标题title到第一页成为第一页标题
标签:uinavigationcontroll 点击第二页按钮 传标题title到第一页成为第一页标题
原文地址:http://blog.csdn.net/zx6268476/article/details/45276383