24.界面间的传值

原创 2015年11月21日 10:47:28

第⼆个视图控制器如何获得第⼀个视图控制器的部分信息?

例如:第⼆个界⾯中lable显⽰第⼀个界⾯textField中的⽂本

UINavigationController以栈的⽅式管理视图控制器。通过push和pop

控制跳转

UINavigationBar管理⼀组UINavigationItem,UINavigationItem包含了UIBarButtonItem。

1.使⽤属性传值解决从前往后传值的问题

明确传值的位置(从前往后传)

一般从前往后传 属性传值

步骤:1.先获取到要传的值

步骤:2.在第二个页面 声明一个属性 这个属性用来接收传过来的值

2.使⽤delegate(代理)解决从后往前传值的问题

=================================

实现代理传值

1.在(前面的界面)第一个界面创建一个按钮和一个UITextField

UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 100, 50)];
textField.backgroundColor = [UIColor yellowColor];
[self.view addSubview:textField];
textField.tag = 100;
[textField release];

UIButton *button = [UIButton buttonWithType:(UIButtonTypeCustom)];
button.frame = CGRectMake(100, 250, 100, 100);
button.backgroundColor = [UIColor blueColor];
[self.view addSubview:button];
[button addTarget:self action:@selector(buttonClick:) forControlEvents:(UIControlEventTouchUpInside)];

2.在(后面的界面)要传值的界面.h文件中创建协议

先创建一个协议

@protocol SecondViewControllerDelegate

声明一个方法 用于传值

传的这个值 就是方法的参数

- (void)changeTextFieldText:(NSString *)text;

@end

@interface SecondViewController : UIViewController

@property (nonatomic ,retain)UITextField *textField;

声明一个字符串属性 用来接收传过来的值

@property (nonatomic ,retain)NSString *str;

声明一个属性 用于传值

@property (nonatomic,assign)id< SecondViewControllerDelegate>delegate;

@end

3.在(后面的界面)要传值的界面.m文件中实现协议

- (void)dealloc

{

[_textField release];

[_str release];

[super dealloc];

}

创建一个按钮和textField

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view.
self.view.backgroundColor = [UIColor magentaColor];

UIButton *button = [UIButton buttonWithType:(UIButtonTypeCustom)];
button.frame = CGRectMake(100, 250, 100, 100);
button.backgroundColor = [UIColor blueColor];
[self.view addSubview:button];

[button addTarget:self action:@selector(buttonClick:) forControlEvents:(UIControlEventTouchUpInside)];

self.textField = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 100, 50)];

self.textField.backgroundColor = [UIColor yellowColor];
self.textField.text = self.str;
[self.view addSubview:self.textField];
[self.textField release];
}

实现按钮点击方法实现传值

- (void)buttonClick:(UIButton *)button

{

// 明确 初值的位置(从后往前传)

// 相当于 让代理去 干活

// 安全判断

if ([_delegate respondsToSelector:@selector(changeTextFieldText:)]) {

// 通过代理 把值传回去

[_delegate changeTextFieldText:self.textField.text];

}

// 返回上一个界面

[self.navigationController popViewControllerAnimated:YES];

}

4.在(前面的界面)第一个界面实现点击方法遵守后面界面的协议实现协议方法

步骤1:先遵守协议

@interface RootViewController () < SecondViewControllerDelegate >

步骤2:设置代理

-(void)buttonClick:(UIButton *)button
{
// 从后往前传 代理传值
SecondViewController *secondVC = [[SecondViewController alloc] init];
[self.navigationController pushViewController:secondVC animated:YES];
[secondVC release];

// 设置代理
secondVC.delegate = self;
}

步骤3:实现协议中的方法

-(void)changeTextFieldText:(NSString *)text
{

// 取出texeField
UITextField textField = (UITextField )[self.view viewWithTag:100];

// 把传过来的值赋值
textField.text = text;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

界面间的传值

属性传值----从前往后 步骤:  1.在后一个界面定义属性.(属性类型和传输数据类型一致)  2.在从前一个界面进入下一个界面之前, 将数据传给第二界面  3.第二个界面取出对应的数据给对应...
  • WMMBK
  • WMMBK
  • 2015年01月28日 21:13
  • 390

Visual Studio 中两个窗体(WinForm)之间相互传值的方法

编写WinowsForm应用程序时,实现两个窗体之间相互传递值的方法其实很简单。以下用一个例子说明:在名为FormMain主窗体运行过程中利用名为FormInfo窗体,获取用户输入信息,并将这些信息返...
  • rockyzee
  • rockyzee
  • 2014年03月18日 19:26
  • 2291

js窗体间传值

A页面传值给 B页面页面A page A function newWin() { var obj = new Object(); ...
  • hanjun0612
  • hanjun0612
  • 2015年09月30日 14:06
  • 1138

mui框架如何实现页面间传值

在App开发中,页面间传值是很常见的开发需求,mui框架根据业务场景不同,提供了两种传值模式。 1、页面初始化时,通过扩展参数传值;   mui在初始化页面时,提供了extras配置参数,通过该参...
  • qq_27626333
  • qq_27626333
  • 2016年07月08日 00:18
  • 10054

OCiOS开发:界面传值

引言在IOS开发过程中,界面传值无处不在,可以说界面传值在IOS开发过程中是非常重要的,而传值方式也多种多样,如下我将介绍几种常见的界面传值方式。传值方法假设目前有控制器HomeViewControl...
  • Hierarch_Lee
  • Hierarch_Lee
  • 2015年08月09日 23:32
  • 5900

两个页面之间通过js进行传值

第一个页面中有两个图片,当点击的时候能在第二个页面中获得它的属性值()通过js进行传值:第一个页面:[html] 第一个页面中有两个图片,当点击的时候能在第二个页面中获得它的属性...
  • baidu_31333625
  • baidu_31333625
  • 2016年11月15日 17:19
  • 3598

iOS 界面间传值

在iOS开发中,界面间数据传输是最为基本的需求,苹果公司为我们开发中提供了多种传值方式,我们在这谈谈常见的五种方式。...
  • i_am_what_i_am
  • i_am_what_i_am
  • 2017年05月02日 12:17
  • 121

ios界面间传值

1.由主界面A传值给子界面B Ashan
  • wanna_love
  • wanna_love
  • 2014年04月30日 18:49
  • 784

iOS页面间几种传值方式

iOS页面间几种传值方式 属性 代理 block 通知 单例 页面间传值有八大传值方式,下面我们就简单介绍下页面间常用的五种传值方式:第二个视图控制器如何获取第一个视图控制器的部分信息例如 :第二个界...
  • believehard
  • believehard
  • 2016年06月01日 08:46
  • 1796

《Swift 的界面之间的传值,详细介绍3种传值方式》 正向传值、协议传值、闭包

《Swift 的界面之间的传值,详细介绍3种传值方式》正向传值、协议传值、闭包    1、 控制器界面间的正向传值    /*    《Swift 的界面之间的传值,详...
  • zhoushuangjian511
  • zhoushuangjian511
  • 2015年12月07日 13:07
  • 4224
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:24.界面间的传值
举报原因:
原因补充:

(最多只允许输入30个字)