您的位置:首页 > 移动开发 > IOS开发

iOS 4种传值总结

2016-01-13 19:23 399 查看
1.正向传值

场景:

A界面 创建 B界面

A-Value 》》》》》B-Value

利用属性传值:在B类中创建属性@property (copy , nonatomic)NSString *str;

然后在A中给B的对象的str赋值:

BViewController *bvc = [[BViewController alloc] init];

bvc.userName = ws.usernameTextField.text; /****正向传值****/

2.反向传值

场景:

A界面 创建 B界面

A-Value 《《《《《《B-Value

实例:配置界面中字体大小传回到A界面

block:

1).BviewController.h里定义block属性

@property (nonatomic , copy) void (^blockName)(参数类型 *参数名);

2).BviewController.m里给block提供值

self.blockName(参数);

3).在AviewController.m里,创建B的对象,

BviewController *bvc = [[BviewController alloc] init];

bvc.blockName = ^void(参数){

需要被赋值的属性 = 参数;

};

3.单例传值

场景:

一个数据需要被多个界面访问,把这个数据存储到单例中

注意:可以吧用户信息存入到单例中

好处:任意界面中存储,任何界面获取

1).创建一个单例类

UserInfo.h中添加若干属性

@property (nonatomic , copy) NSString *username;

@property (nonatomic , copy )NSString *password;

@property (nonatomic ) BOOL isLogin;

@property (nonatomic , copy) NSString *money;

2).再创建一个类UserManager,获取单例类的对象

UserManager.h

#import <Foundation/Foundation.h>

#import "UserInfo.h"

@interface UserManager : NSObject

//获取这个类的单例对象

//注意:这个方法获取的对象是唯一的,每次获取同一个对象

+ (instancetype)manager;

@property (strong , nonatomic) UserInfo *userInfo;

@end

在任意一个界面中

UserManager *manager = [UserManager manager];

manager.userInfo.isLogin = YES;

manager.userInfo.username = self.usernameTextField.text;

(如果在block中,需要在block外:

__weak typeof(self) ws = self; )

manager.userInfo.password = self.passwordTextField.text;

在另一个任意界面中,获取这个单例类对象

self.title =[NSString stringWithFormat:@"%@",[UserManager manager].userInfo.username];

4.通知传值

场景:一个界面发出消息,其他多个界面同时相应

实例:配偶之界面切换主题,其他多有界面切换主题

注意:与其他传值不同,一处发出通知,其他多出同时响应。

(只能给已创建的View传值)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: