UIPassValue页面传值 UI_08(下)

FirstViewController
*firstVC =
[[FirstViewController
alloc]init];
//创建导航控制器
UINavigationController
*navigationController
= [[UINavigationController
alloc]initWithRootViewController:firstVC];
self.window.rootViewController
=
navigationController;
[firstVC release];
[navigationController release];
代理对象所在的类遵循协议
@interface
FirstViewController
()<</span>SecondViewControllerDelegate>
@end
(void)passValue:(NSString
*)string{
#warning
代理传值第五步 实现协议中的方法
((UILabel
*)[self.view
viewWithTag:202]).text
=
string;
(void)viewWillDisappear:(BOOL)animated{
((UILabel
*)[self.view
viewWithTag:202]).text
=
[SingleLeton__
shareSingleLeton].string;
}
- (void)viewDidLoad
{
[super
viewDidLoad];
self.view.backgroundColor
=
[UIColor
cyanColor];
//建立一个label
UILabel
*label =
[[UILabel
alloc]initWithFrame:CGRectMake(30,
84,
260,
40)];
label.tag
=
202;
label.backgroundColor
=
[UIColor
whiteColor];
label.text
=
@"你爱她吗?";
label.textColor
=
[UIColor
redColor];
#warning 单例传值第五步
取出单例中属性中存储的数据,赋值给空间
label.text
=
[SingleLeton__
shareSingleLeton].string;
[self.view
addSubview:label];
[label release];
//建立一个textField
UITextField
*field =
[[UITextField
alloc]initWithFrame:CGRectMake(30,
164,
260,
40)];
//第三步加tag值
field.tag
=
200;
field.borderStyle
=
UITextBorderStyleRoundedRect;
field.placeholder
=
@"请输入内容";
field.textColor
=
[UIColor
redColor];
[self.view
addSubview:field];
[field release];
UIButton
*button =
[UIButton
buttonWithType:UIButtonTypeCustom];
button.frame
=
CGRectMake(30,
244,
260,
40);
[button setTitle:@"进入下一页"
forState:UIControlStateNormal];
button.tintColor
=
[UIColor
redColor];
button.backgroundColor
=
[UIColor
grayColor];
[button addTarget:self
action:@selector(handlePassValue
: ) forControlEvents:(UIControlEventTouchUpInside)];
[self.view
addSubview:button];
[self
configureCommonProerty];
self.navigationController.navigationBar.tintColor
=
[UIColor
redColor];
}
#pragma mark
公共方法
-
(void)configureCommonProerty{
//设置导航条背景图片
[self.navigationController.navigationBar
setBackgroundImage:[UIImage
imageNamed:@"1"]
forBarMetrics:UIBarMetricsDefault];
}
- (void)handlePassValue
: (UIButton
*)passValue{
//此时创建的是下一个界面对象
SecondViewController
*second =
[[SecondViewController
alloc]init];
#warning 代理传值第三步
为后一个界面指定代理对象,只能是前一个页面试图控制器对象
second.delegate
=
self;
push之前传入数据
second.testString
= ((UITextField
*)[self.view
viewWithTag:200]).text;
[self.navigationController
pushViewController:second
animated:YES];
[second release];
}
- (void)customNavigationItemAppearance{
//配置导航条显示的标题
self.navigationItem.title
=
@"第一页";

定义协议
@protocol
SecondViewControllerDelegate
<</span>NSObject>
- (void)passValue
: (NSString
*)string;
@end
@interface
SecondViewController
: UIViewController
#warning
属性传值第一步
定义属性且属性的类型要和要传入的数据类型要保持一致
*testString;
定义代理属性
@property(nonatomic,assign)id<</span>SecondViewControllerDelegate>delegate;

UILabel
*label =
[[UILabel
alloc]initWithFrame:CGRectMake(30,
84,
260,
40)];
label.backgroundColor
=
[UIColor
whiteColor];
label.text
=
@"给我下一页的内容";
#warning 属性传值的第三步
取出数据让控件显示
label.text
=
self.testString;
label.textColor
=
[UIColor
redColor];
[self.view
addSubview:label];
[label release];
//建立一个textField
UITextField
*field =
[[UITextField
alloc]initWithFrame:CGRectMake(30,
164,
260,
40)];
field.tag
=
203;
field.borderStyle
=
UITextBorderStyleRoundedRect;
field.placeholder
=
@"请输入第二页的内容";
field.textColor
=
[UIColor
redColor];
[self.view
addSubview:field];
[field release];
//建立一个button
UIButton
*button =
[UIButton
buttonWithType:UIButtonTypeCustom];
button.frame
=
CGRectMake(30,
244,
260,
40);
[button setTitle:@"进入下一页"
forState:UIControlStateNormal];
button.tintColor
=
[UIColor
redColor];
button.backgroundColor
=
[UIColor
grayColor];
[button addTarget:self
action:@selector(handlePassValue
:) forControlEvents:(UIControlEventTouchUpInside)];
[self.view
addSubview:button];
//建立一个button
UIButton
*button1 =
[UIButton
buttonWithType:UIButtonTypeCustom];
button1.frame
=
CGRectMake(30,
324,
260,
40);
[button1 setTitle:@"返回上一页"
forState:UIControlStateNormal];
button1.tintColor
=
[UIColor
redColor];
button1.backgroundColor
=
[UIColor
grayColor];
[button1 addTarget:self
action:@selector(handlePass
:) forControlEvents:(UIControlEventTouchUpInside)];
[self.view
addSubview:button1];
self.navigationItem.title
=
@"第二页";
}
- (void)handlePassValue
: (UIButton
*)passValue{
ThirdViewController
*third =
[[ThirdViewController
alloc]init];
//传值第三不创建时赋值
third.textString
=
((UITextField
*)[self.view
viewWithTag:203]).text;
[self.navigationController
pushViewController:third
animated:YES];
[third release];
(void)handlePass
: (UIButton
*)pass{
让代理执行协议中的方法
NSString
*string =
((UITextField
*)[self.view
viewWithTag:
203]).text;
if
([self.delegate
respondsToSelector:@selector(passValue:)])
{
[self.delegate
passValue:string];
}
[self.navigationController
popViewControllerAnimated:YES];
*textString;
=
[UIColor
greenColor];
//建立一个label
UILabel
*label =
[[UILabel
alloc]initWithFrame:CGRectMake(30,
84,
260,
40)];
label.backgroundColor
=
[UIColor
grayColor];
label.text
=
@"给我第一个页面的内容";
label.text
=
self.textString;
[self.view
addSubview:label];
[label release];
//建立一个textField
UITextField
*field =
[[UITextField
alloc]initWithFrame:CGRectMake(30,
164,
260,
40)];
field.borderStyle
=
UITextBorderStyleRoundedRect;
field.textColor
=
[UIColor
redColor];
field.placeholder
=
@"啦啦啦";
field.tag
=
204;
[self.view
addSubview:field];
[field release];
//建立一个button
UIButton
*button =
[UIButton
buttonWithType:UIButtonTypeCustom];
button.frame
=
CGRectMake(30,
244,
260,
40);
[button setTitle:@"返回"
forState:UIControlStateNormal];
button.tintColor
=
[UIColor
redColor];
button.backgroundColor
=
[UIColor
grayColor];
[button addTarget:self
action:@selector(handlePassValue
:) forControlEvents:(UIControlEventTouchUpInside)];
[self.view
addSubview:button];
self.navigationItem.title
=
@"第三页";
}
- (void)handlePassValue
: (UIButton
*)passValue{
#warning 单例传值第四步
给单例对象的属性赋值
[SingleLeton__
shareSingleLeton].string
= ((UITextField
*)[self.view
viewWithTag:204]).text;
[self.navigationController
popToRootViewControllerAnimated:YES];
,定义单例类,继承自NSObject
#import
@interface
SingleLeton__
: NSObject
#warning 单例传值第二步
定义单例类的创建的方法
//share stand
main 创建单例对象方法常用的开头
+ (SingleLeton__
*)shareSingleLeton;
#warning
单例传值第三步
定义属性,存储传输的数据,属性的类型要和传输数据的类型保持一致
@property(nonatomic,copy)NSString
*string;

修饰的SingleLeton对象
//static
修饰的变量的生命周期和应用程序的生命周期一样长,只有程序退出后台的时候才被销毁
static
SingleLeton__
*single
= nil;
+ (SingleLeton__
*)shareSingleLeton{
//single等于nil还没被初始化,所以在if语句对其初始化
//实时同步单例对象的创建,保护其在多线程下的安全
@synchronized(self){
if
(single
==
nil)
{
single
=
[[SingleLeton__
alloc]init];
}
}
return
single;
}
- (void)dealloc{
self.string
=
nil;
[super
dealloc];
UIPassValue页面传值 UI_08(下)的更多相关文章
- ASP.NET MVC 5 Web编程5 -- 页面传值的方式
本篇文章将讲述MVC的页面传值方式,具体包括:后端向前端传值(Controller向View传值):前端向后端传值(View向Controller传值):Action与Action之间的传值. 回顾 ...
- WebForm 页面传值
一.使用Querystring Querystring是一种非常简单的传值方式,其缺点就是会把要传送的值显示在浏览器的地址栏中,并且在此方法中不能够传递对象.如果你想传递一个安全性不是那么太重要或者是 ...
- net面试 ASP.NET页面传值的各种方法和分析 (copy)
Web页面是无状态的, 服务器对每一次请求都认为来自不同用户,因此,变量的状态在连续对同一页面的多次请求之间或在页面跳转时不会被保留.在用ASP.NET 设计开发一个Web系统时, 遇到一个重要的问题 ...
- Spring 向页面传值以及接受页面传过来的参数的方式
来源于:http://www.cnblogs.com/liuhongfeng/p/4802013.html 一.从页面接收参数 Spring MVC接收请求提交的参数值的几种方法: 使用HttpSer ...
- ASP.NET页面传值不使用QueryString
ASP.NET页面传值不使用QueryString Asp.net中的页面传值方法: 1 Url传值 特点:主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在浏览器的地址 ...
- artdialog4.1.7 中父页面给子页面传值
artdialog4.1.7中父页面给子页面传值时看了一些网友的解决方法: 在父页面声明全局变量 var returnValue=“ ”,子页面用art.dialog.opener.returnVal ...
- webform页面传值和删除修改
一.webform跨页面传值1.内置对象地址栏数据拼接 QueryString 优点:简单好用:速度快:不消耗服务器内存. 缺点:只能传字符串:保密性差(调转页面后在地址栏显示):长度有限.响应请求对 ...
- c#ASP.NET中页面传值共有这么几种方式
一.目前在ASP.NET中页面传值共有这么几种方式: 1.Response.Redirect("http://www.hao123.com",false); 目标页面和原页面可以在 ...
- webform 页面传值的方法总结
ASP.NET页面之间传递值的几种方式 页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有Quer ...
随机推荐
- 借助Bodymovin播放svg动画
svg动画,截取工具有点不忍直视了~~~ 为了实现上面的svg动画,可以使用bodymovin插件,简单配置之后,就可以直接可以实现在 AE(可视化操作,不用码代码)上面导出 svg的json数据,在 ...
- CSS缩写的样式
熟悉和了解CSS的朋友都知道,CSS样式表有很多缩写方式.比如,定义字体.定义背景等,都可以把CSS代码缩写到一行.为了能更好的搞清楚CSS缩写方法,我收集整理了一些有关CSS简写的参考资料,也是对自 ...
- Python中切片的工作原理
切片时的索引是在两个字符之间.左边第一个字符的索引为 0,而长度为 n 的字符串其最后一个字符的右界索引为n. 例如: +---+---+---+---+---+---+ | P | y | t | ...
- matlab sparse函数和full函数用法详解(转)
sparse函数 功能:Create sparse matrix-创建稀疏矩阵 用法1:S=sparse(X)--将矩阵X转化为稀疏矩阵的形式,即矩阵X中任何零元素去除,非零元素及其下标(索引)组成矩 ...
- Linux shell爬虫实现树洞网自动回复Robot
奇怪的赞数 人生在世,不如意事十之八九,可与言者无二三人.幸好我们生在互联网时代,现实中找不到可以倾诉的人还可以在网络上寻找发情绪宣泄口,树洞这类产品就是提供一个让人在网络上匿名倾诉的平台. 我是偶然 ...
- iOS开源加密相册Agony的实现(四)
简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...
- 传Lua对象到Cpp
传Lua对象到Cpp (金庆的专栏) 摘自:http://raycast.net/lua-intf 以下代码演示了Lua函数和表传入Cpp进行处理: std::string acceptStuff(L ...
- EJB3+JBoss5+Myeclipse9创建HelloWorld实例
本实例用到的工具 1. jboss5 (配置不做介绍,谷歌度娘都有) 2. MyEclipse 9 实例创建 1.EJB类创建 打开MyEclipse 9 中右上角如下选项 再新建一个EJB项目 新 ...
- Struts 2 之文件上传
如果要获得上传文件的原始名称,需要定义一个String类型的属性,属性名必须为***FileName,其中***为File属性的名称:同理,如果要获取该文件的MIME类型,需要定义一个***Conte ...
- FFmpeg源代码简单分析:结构体成员管理系统-AVOption
===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...