导航栏UINavigaionController中的传值,例如:把一个页面的button的title属性内容传给UINavigaionController的title
//新建一个ViewControl——FirstViewControl,并在_.h文件中写一个协议
@protocol senderValue <NSObject>
//协议里的方法
-(void)senderBtnTitle:(NSString *)title;
@end
@interface FirstViewController : UIViewController<senderValue>
@property(nonatomic,assign)id<senderValue>delegate;
@end
//。m文件中
#import "FirstViewController.h"
@interface FirstViewController ()
{
UIButton *btn;
}
@end
@implementation FirstViewController
@synthesize delegate=_delegate;
- (void)viewDidLoad {
[super viewDidLoad];
//定义一个数组,用来存放的按钮的名字
NSArray *titleArr=[[NSArray alloc]initWithObjects:@"按钮1",@"按钮2",@"按钮3", nil];
//实例化3个button
for (int i=0; i<3; i++) {
btn=[[UIButton alloc]init];
btn.frame=CGRectMake(50, 120+(i*60), 200, 30);
[btn setTitle:titleArr[i] forState:UIControlStateNormal];
btn.backgroundColor=[UIColor greenColor];
[btn addTarget:self action:@selector(clickBtn:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
}
}
//按钮的(跳转根视图)事件,并存放按钮的title保存在str里
-(void)clickBtn:(UIButton *)sender{
//定义一个按钮名 字符串
NSString *str=sender.currentTitle;
if ([_delegate respondsToSelector:@selector(senderBtnTitle:)]) {
[_delegate senderBtnTitle:str];
}
[self dismissViewControllerAnimated:YES completion:nil];
}
//跟视图 ViewControl.m
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.title=@"根视图";
UIButton *btn=[[UIButton alloc]initWithFrame:CGRectMake(50, 100, 300, 30)];
btn.backgroundColor=[UIColor yellowColor];
[btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
}
//实现协议的方法
-(void)senderBtnTitle:(NSString *)title{
self.navigationItem.title=title;
}
//跳转到另一个视图
-(void)btnClick{
FirstViewController *first=[[FirstViewController alloc]init];
//切记切记切记切记切记切记
first.delegate=self;
[self.navigationController presentViewController:first animated:YES completion:nil];
}