当前位置: 首页 > news >正文

UI中的界面之间的值传递 一

一. 从前往后传 —— 属性传值
1< 在后面一个界面定义属性(属性的类型要和传输的数据的数据类型一致).
2< 在从前一个界面进入到下一个界面之前, 将数据传给下一个界面.
例如有两个视图控制器:

FirstViewController 和 SecondViewController

在这两个视图控制器中设置一个textField 和 label, 并且把FirstViewController的view上的textField上输入的text显示到SecondViewController的label上.

在FirstViewController.m文件中代码如下:

#import "FirstViewController.h"

#import "SecondViewController.h"

@interface FirstViewController () 

@end

@implementation FirstViewController

- (void)viewDidLoad {

    [super viewDidLoad];

 //     进入下一界面的按钮

    [self setupButton];

    [self setupTextField];

    [self setupLabel];

}

// 创建button

- (void)setupButton {

 

    UIButton *pushBtn = [UIButton buttonWithType:UIButtonTypeSystem];

    pushBtn.frame = CGRectMake(20, 100, 280, 40);

    [pushBtn setTitle:@"进入下一个界面" forState:UIControlStateNormal];

    pushBtn.backgroundColor = [UIColor blueColor];

    [pushBtn addTarget:self action:@selector(handlePushBtn:) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:pushBtn];

 

}

 

 // 创建textField

- (void)setupTextField {

    UITextField *textFiled = [[UITextField alloc] initWithFrame:CGRectMake(20, 230, 280, 40)];

    textFiled.placeholder = @"显示到第二个界面上";

    [self.view addSubview:textFiled];

    textFiled.tag = 100;

    textFiled.backgroundColor = [UIColor grayColor];

    [textFiled release];

}

 

// 创建label

- (void)setupLabel {

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 300, 280, 40)];

    label.backgroundColor = [UIColor whiteColor];

    label.layer.borderWidth = 2;

    label.layer.cornerRadius = 5;

    label.tag = 200;

    [self.view addSubview:label];

    [label release];

#pragma mark -- button action

- (void)handlePushBtn:(UIButton *)sender {

// 1. 创建的二个视图控制器

    SecondViewController *secondVC = [[SecondViewController alloc] init];

// 第二个显示第一个textField.text

    secondVC.data = [(UITextField *)[self.view viewWithTag:100] text];

// 2. 通过导航控制push到下一个界面(视图控制器自带的navigationController 属性能够获取到管理当前视图控制器的导航控制器, 然后, 再通过导航控制器进行push)

    [self.navigationController pushViewController:secondVC animated:YES]; // 该行代码表示进入下一个界面.

    // 3. 释放

    [secondVC release];

@end

 

在SecondViewController.h文件中代码如下:

#import <UIKit/UIKit.h>

@protocol SecondViewControllerDelegate <NSObject>

- (void)passValue:(NSString *)data;

@end

 

@interface SecondViewController : UIViewController

// 属性传值第一步: 后一个界面定义属性

@property (nonatomic, copy) NSString *data; 

@end

 

在SecondViewController.m 文件中

@interface SecondViewController ()

@end

 

@implementation SecondViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

// 设置上一界面的按钮

    [self setupPopButton];

    [self setupTextField];

    [self setupLabel];

    }

 

- (void)setupTextField {

    UITextField *textFiled = [[UITextField alloc] initWithFrame:CGRectMake(20, 230, 280, 40)];

    textFiled.placeholder = @"显示到上一个界面上";

    [self.view addSubview:textFiled];

    textFiled.tag = 200;

    textFiled.backgroundColor = [UIColor grayColor];

    [textFiled release];

    

}

 

- (void)setupLabel {

    

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 300, 280, 40)];

    label.backgroundColor = [UIColor whiteColor];

    label.layer.borderWidth = 2;

    label.layer.cornerRadius = 5;

    label.text = self.data;

    [self.view addSubview:label];

    [label release];

    

}

 

- (void)setupPopButton {

    UIButton *popBtn = [UIButton buttonWithType:UIButtonTypeSystem];

    popBtn.frame = CGRectMake(20, 150, 280, 40);

    [popBtn setTitle:@"进入上一个界面" forState:UIControlStateNormal];

    popBtn.backgroundColor = [UIColor blueColor];

    [popBtn addTarget:self action:@selector(handlePopBtn:) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:popBtn];

}

 

- (void)handlePopBtn:(UIButton *)sender {

       // 1. 返回上一界面

    [self.navigationController popViewControllerAnimated:YES];

 }

- (void)dealloc {

    [_data release];

    [super dealloc];

}

 

 

 

 

 

转载于:https://www.cnblogs.com/hanpengshuai/p/4764506.html

相关文章:

  • [POJ3067]Japan
  • 将数据集导出到Excel
  • 标准输出重定向覆盖与追加
  • [中国寒龙反网络病毒联盟001]谷歌应用引擎视频(Google.Datastore.And.RSS)
  • Arduino中hex文件的保存及应用(转)
  • java.io.IOException: Malformed \uxxxx encoding.
  • 【ASP.NET MVC】个人复习整理
  • 迷宫问题(bfs的应用)
  • Google浏览器设置搜索打开新的标签页
  • 记录自己的第一篇博客
  • ajax jsonp跨域
  • AJAX实例
  • linux命令中 rpm –qa|grep softname的含义
  • Android:设置背景图和标题
  • 浙江大学PAT考试1069~1072(2013-11-2)
  • (三)从jvm层面了解线程的启动和停止
  • [case10]使用RSQL实现端到端的动态查询
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 345-反转字符串中的元音字母
  • CSS实用技巧干货
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • FineReport中如何实现自动滚屏效果
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • interface和setter,getter
  • Java多态
  • maven工程打包jar以及java jar命令的classpath使用
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • spring-boot List转Page
  • Vue2.x学习三:事件处理生命周期钩子
  • 对JS继承的一点思考
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 网络应用优化——时延与带宽
  • 学习使用ExpressJS 4.0中的新Router
  • 异常机制详解
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • #FPGA(基础知识)
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #图像处理
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (arch)linux 转换文件编码格式
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (三)mysql_MYSQL(三)
  • (三)uboot源码分析
  • (算法)Game
  • (循环依赖问题)学习spring的第九天
  • (一一四)第九章编程练习
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .NET 8.0 发布到 IIS
  • .NET Core 2.1路线图
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET 分布式技术比较
  • .net 流——流的类型体系简单介绍
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?