ios界面间传值

-、由主界面A传值给子界面B(属性传值,方法传值)

将A界面UITextField上输入的内容在点击按钮的时候传给B界面中的UITextField
1.属性传值
在B界面间定义一个属性NSString * info,在A中创建B的时候给这个属性赋值,B中的UITextField来显示这个info
A 界面
 .h中

添加一个属性  @property(nonatomic,retain)UITextField * textField;

 .m中 
-( void)btnAction:( id)sender
{
    SecondViewController * secondViewController = [[SecondViewController alloc ] init ];
    [secondViewController setInfo:_textField.text];
    [ self presentViewController :secondViewController animated : NO completion :^{}];
    [secondViewController release];

}

B 界面
.h中

添加一个属性 @property(nonatomic,retain)NSString * info;

.m中

[textField setText:_info];

2.方法传值

在B界面中添加一个方法-(void)setString:(NSString *)str,A界面创建B界面对象,B对象调用这个方法给NSString * info传值

A 界面
 .h中

添加一个属性  @property(nonatomic,retain)UITextField * textField;

 .m中 
-( void)btnAction:( id)sender
{
    SecondViewController  * secondViewController = [[SecondViewController   alloc init ];
    [secondViewController setString : _textField . text ];
    [ self  presentViewController :secondViewController animated : NO  completion :^{}];
    [secondViewController  release];
}
B 界面
.h中

添加一个属性 @property(nonatomic,retain)NSString * info;

.m中

-(void)setString:(NSString *)str

{

    self.info = str;

}

[textField setText:_info];

二、由子界面B返回到主界面A时传值

1.协议传值

B界面

.h

//创建一个协议,用来给主界面传值

@protocol SendToFirstDelegate <NSObject>


-(void)setFirstText:(NSString *)str;


@end


//添加一个属性

@property(nonatomic,assign)id<SendToFirstDelegate>delegate; //代理变量

.m

-(void)btnAction:(id)sender

{

    [self.delegate setFirstText:_textField.text];

    [self dismissViewControllerAnimated:NO completion:^{}];


}

A界面

.h

//包含B界面的头文件,主要时为了遵循协议

#import "SecondViewController.h"

//遵循协议

@interface FirstViewController : UIViewController<SendToFirstDelegate>


.m中

//实现协议

-(void)setFirstText:(NSString *)str

{

    [_textField setText:str];

    

}

2.消息中心传值(通常可以跨几个界面来传值)

注册消息中心

[[NSNotificationCenter defaultCenter]addObserver:(id) selector:(SEL)name:(NSString *) object:(id)];

参数说明:

ObServer 观察者,就是或的消息的对象,一般是self,

selector 获得消息后执行的方法选择器(参数是NSNotification *类型的,我们用它的userInfo的数据)

name 消息中心通信的暗号,需要两边匹配

object 一般为nil代表是公共的消息中心

post一个消息

 [[NSNotificationCenter defaultCenter]postNotificationName:(NSString *) object:(id) userInfo:(NSDictionary *)];

参数说明

name 消息中心通信的暗号,需要两边匹配

useerInfo 传回的数据,是一个字典类型的


A界面

.m

//init方法里注册消息中心

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(setText:) name:@"IOS" object:Nil];

//添加消息中心响应方法

-(void)setText:(NSNotification *)noti

{

    NSDictionary * dic =[noti userInfo];

    [_textField setText:[dic objectForKey:@"text"]];

}

B界面

.m

//按钮按下之后通过消息中心将info传给A界面

-(void)btnAction:(id)sender

{

    //[self.delegate setFirstText:_textField.text];

    NSDictionary * dic = [NSDictionary dictionaryWithObject:_textField forKey:@"text"];

    [[NSNotificationCenter defaultCenter]postNotificationName:@"IOS" object:Nil userInfo:dic];

    [self dismissViewControllerAnimated:NO completion:^{}];

   }













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值