在现实开发中,传值问题我们经常会遇到,比较常见的便是顺传,即从第一个控制器将数据传递到第二个控制器中去,通常顺传的方法是在第二个页面定义一些属性来接收传进来的值,在第一个页面中拿到第二个页面,这样就能将值赋给那些属性传到第二个页面了。
下面给出代码
在第一个控制器的.m文件中
#import "secondViewController.h"//导入第二个控制器的头文件
@interface ViewController ()
@property (strong,nonatomic) secondViewController *secViewController;
@end
- (void)viewDidLoad {
[super viewDidLoad];
//创建一个button点击跳转界面并传值
UIButton *btn = [[UIButton alloc]init];
btn.fram = CGRectMake(100,100,100,100);
[btn setTitle:@"click" forState:UIControlStateNormal];
[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(clickBtn) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
}
- (void)clickBtn{
//按钮点击事件
if (self.secViewController == nil){
self.secViewController = [[secondViewController alloc]init];
}
self.secViewController.nameStr = @"name";//赋值
[self.navigationController pushViewController:self.secViewController animated:YES];//跳转控制器
}
在第二个控制器的.h文件中
@interface xibTableViewController : UITableViewController
@property (retain,nonatomic) NSString *nameStr;//定义属性
@end
在第二个控制器的.m文件中
- (void)viewDidLoad {
[super viewDidLoad];
//创建一个label用于显示传入的值
UILabel *label = [[UILabel alloc]init];
label.frame = CGRectMake(100, 100, 100, 100);
label.text = self.nameStr;
[self.view addSubview:label];
}