界面之间传值

首先要建立两个页面

一个根视图控制器,之后建第二个视图

MainViewController和SecondViewController

界面传值共有两种:

第一种是在第一个界面向第二个页面传值

这种传值相对简单:系统原本就有这种方法

1.在SecondViewController.h文件中定义一个属性来接收传的整数,数组.或者是字符串;

例子

@property(nonatomic ,assign)NSInteger number;
@property(nonatomic ,retain)NSArray *arr;
@property(nonatomic ,copy)NSString *str;

2.在第一个页面中的点击方法中实现传值:

-(void)click:(UIButton *)button{

// 通过导航控制器进行跳转

// 先创建下一页的对象

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

[self.navigationController pushViewController:secondView animated:YES];

[secondView release];

// 属性传值的第二步

secondView.number =100;

secondView.str =self.textfield.text;

secondView.arr [email protected][@”1”,@”2”,@”3”];

}

第二种是从第二个页面向第一个页面传值

这种传值相对第一种传值方法比较复杂,是因为原本没有这种方法,要自己写一种协议方法

这种传值方法共分为六部:

1.在SecondViewController.h文件中定义一个协议方法:用来传值:

例子:

@protocol SecondViewControllerDelegate <NSObject>
-(void)changeValue:(NSString *)value;
@end
2.设置代理人的属性

在SecondViewController.h文件中

例子:

@property(nonatomic,assign)id<SecondViewControllerDelegate>delegate;
3.设置代理人执行的协议方法

在SecondViewController.m文件中

例子:

-(void)click:(UIButton *)button{

// 返回上一页面

[self.navigationController popViewControllerAnimated:YES];

// 设置代理人执行的协议方法

[self.delegate changeValue:self.textField.text];

}

4.签订协议

例子:

@interface MainViewController ()<SecondViewControllerDelegate>
5.设置代理人

secondVC.delegate =self;

这步需要在创建secondVC的协议方法中设置

6.实现协议方法

例子:

-(void)changeValue:(NSString *)value{
    self.label.text=value;
}

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

时间: 2024-08-10 07:31:13

界面之间传值的相关文章

iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)

使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值: 先说一下思想: 首先,创建两个视图控制器,在第一个视图控制器中创建一个UILabel和一个UIButton,其中UILabel是为了显示第二个视图控制器传过来的字符串,UIButton是为了push到第二个界面. 第二个界面的只有一个UITextField,是为了输入文字,当输入文字,并且返回第一个界面的时候,当第二个视图将要消失的时候,就将第二个界面上TextFiled中的文字传给第一个界面,并且显

iOS中的导航条(UISegmentedControl)的基本使用(界面中传值的3中方法)

Appdelegate中 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; //1.创建单视图控制器对象, FirstViewControll

界面间传值的方式

属性传值: 属性传值适用于从前往后传值. 代理传值:适用于从后往前传值. 单例传值: 适合于从前往后传,从后往前传都可以, 但是内存空间不会被释放直到应用程序结束 NSUserDefaults:数据持久化的一种方式,数据可以长久的存储,存到本地然后再从本地获取.通知:通知的使用需要注册通知,以及发送通知. block: 需要定义 block,当 block 进行回调时将值传给其他界面,适用于从后往前 初始化方法:给第二个界面写一个初始化方法,当进入下一界面时,将第一个界面的值作为初始化方法的参数

使用Delegate在两个ViewController之间传值

以下就实现了使用Delegate在两个ViewController之间传值,这种场景一般应用在进入子界面输入信息,完后要把输入的信息回传给前一个界面的情况,比如修改用户个人信息,点击修改进入修改界面,修改完后到显示界面显示修改后的结果. 协议中声明的方法: #import <Foundation/Foundation.h> @class UserEntity; @protocol PassValueDelegate <NSObject> -(void)passValue:(User

MVC 控制器之间传值学习——session

刚接触MVC不久,写的一些代码自己都不忍心看下去.路漫漫其修远兮,宝宝还需努力!之前只用过Session做登录时用户信息的储存,今天对集合类数据做了小小的尝试:利用session在控制器之间传值,以减少代重复率. 1.将数据储存到Session中(不受类型限制): 2.从session中读取数据(注意转换为正确的的数据类型): 3.随你怎么操作. using System.Collections.Generic; using System.Linq; using System.Web.Mvc;

Asp.Net Core MVC控制器和视图之间传值

一.Core MVC中控制器和视图之间传值方式和Asp.Net中非常类似 1.弱类型数据:ViewData,ViewBag 2.强类型数据:@model 二.代码 实例  1.ViewData public IActionResult Index() { //测试的 时候在Cummuty2017的最新版中右键添加视图生成的 视图文件的编码 为ANSI对于中文显示乱码 //使用ViewData 实现 控制器 和 视图之间传值 /* * 1.ViewData指定键值对的方式设置或读取 数据 * 2.

android界面之间数据的传递

不同界面之间,数据的传递是很常用的一个操作,这种数据的携带也是很简单的. 效果: 跳转后: 这个例子很简单,但是我们把第一个界面输入的姓名张三顺利传递到了第二个界面 附代码如下: 主界面: 1 package com.yy.activity.value; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.os.Bundle; 6 import android.text.TextUt

ionic新手教程第七课-简要说明几种界面之间的參数传递及优缺点

截至2016年4月13日19点32分,我公布的ionic新手教程,已经公布6课了, 总訪问量将近6000,平均每节课能有1000的訪问量.当中訪客最多的是第三课有2700的訪客. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 事实上我開始的时候计划的挺好的,就依照我这阶段的安排,慢慢的带大家做一个

一个简易的便签工具:探索窗体之间传值和传引用的方法

简单的便签工具:实现了基于文本的便签信息的浏览,删除,添加.可以查看时间,实时更新数据. 这个便签工具完全基于面向对象的编程方式,首先定义Note类,然后使用NoteManager类进行便签的管理.其中的关键就是在NoteManager类中定义list<Note>泛型集合.原理上和ArrayList基本是一致的. NoteManager的工作原理: public List<Note> list;//定义一个泛型集合,并在构造函数中初始化. private int CurrentIn