iOS开发 两个视图之间值传递的常用方法

五、视图之间传值方法——单列

思路:定义一个单列,里面包含了name 和old属性
这样在视图控制器1和视图控制器里面定义的这个单列对象都是一个对象,所以让视图控制器1的name和old属性等于这个单列对象的对应属性,然后在视图控制器2中定义的单列对象的属性等于对象的textfield里面的内容,这样在视图控制器1里面的name和old 就是视图控制器2里面的输入的内容。
iOS开发 两个视图之间值传递的常用方法_第1张图片

1、首先抽象一个单列类Singleton

.h文件


@interface Singleton : NSObject

@property(nonatomic,copy)NSString *name;
@property(nonatomic,copy)NSString *old;
+(Singleton *)defaultSingleton;
@end

.m文件:

static Singleton *userInfor = nil;
@implementation Singleton

+(Singleton *)defaultSingleton
{
if (userInfor == nil) {
userInfor = [[Singleton alloc]init];
//默认
userInfor.name = @”姓名”;
userInfor.old = @”年龄”;
}
return userInfor;
}
@end

视图控制器1:
.h文件:

@interface FirstController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *nameLable;
@property (weak, nonatomic) IBOutlet UILabel *oldLable;

@end

.m文件:

@implementation FirstController
//按钮响应事件  跳转到视图控制器2 你当然也可以用代码创建视图控制器,然后push 到下一个视图控制器,或者用模态视图的presentviewcontroller 方法来进行跳转 
- (IBAction)buttonAction:(UIButton *)sender {

    [self performSegueWithIdentifier:@"push" sender:nil];
}

-(void)viewWillAppear:(BOOL)animated
{
    Singleton *singleton = [Singleton defaultSingleton];
    _nameLable.text = singleton.name;
    _oldLable.text = singleton.old;

}
@end

视图控制器2:
.h文件:

@interface SecondController : UIViewController
@property (weak, nonatomic) IBOutlet UITextField *nameText;
@property (weak, nonatomic) IBOutlet UITextField *oldText;

@end

.m文件:

@implementation SecondController

-(void)viewWillDisappear:(BOOL)animated
{
    Singleton *singleton = [Singleton defaultSingleton];
    singleton.name = _nameText.text;
    singleton.old = _oldText.text;
}

@end

在这里就讲了5种视图之间传值常用的方法,所以的代码在我的资源http://download.csdn.net/detail/moxi_wang/9040615里面都是免积分下载的(这论坛的大部分资源需要积分,不是很方便),有疑问的可以发邮件:[email protected] 或者留言
这几种思想其实就是iOS里面的几种常见 的设计模式,由于我都是在故事板里面之间画的 ,如果你不习惯这种,那么您可以用模态视图的方法跳转或者用导航控制器的push方法跳转,核心代码一模一样。

你可能感兴趣的:(UI初级)