控制器之间传递数据的方法(segue)

在登陆界面,点击登陆,验证账号密码,之后跳转到下一个窗口。用户的数据从第一个控制器传递到下一个控制器。实现方法如下:

/**点击登陆按钮*/
- (IBAction)login { //账号:qqq    密码:www
    if(![self.accountField.text isEqualToString:@"qqq"]){
        [MBProgressHUD showError:@"用户名不存在.."];    //MBProgressHUD为之前博客中常用第三方
        return;                                       //类库中很棒的加载特效(透明指示层HUD)的框架
    }                                                 //地址:https://github.com/jdg/MBProgressHUD
    if(![self.pwdField.text isEqualToString:@"www"]){
        [MBProgressHUD showError:@"密码不存在.."];
        return;
    }
    
    //添加加载遮盖
    [MBProgressHUD showMessage:@"正在加载中..."];
    
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)),
                   dispatch_get_main_queue(), ^{
                       //加载成功后隐藏遮盖(载入页面)
                       [MBProgressHUD hideHUD];
                       //实现跳转
                       [self performSegueWithIdentifier:@"login2Contact" sender:nil];
    });
}

/**
 *执行segue后,跳转之前会调用这个方法
 *一般在这里给下个控制器传递数据
 */
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    //1、取得目标控制器(联系人列表控制器)
    UIViewController *contactVc = segue.destinationViewController;
    
    
    //2、设置标题
    contactVc.navigationItem.title = [NSString stringWithFormat:@"%@的联系人列表",self.accountField.text];
}

performSegueWithIdentifier:sender:

利用performSegueWithIdentifier:方法可以执行某个Segue,完成界面跳转

接下来研究performSegueWithIdentifier:sender:方法的完整执行过程

/******************************************************/
[self performSegueWithIdentifier:@“login2contacts” sender:nil];
// 这个self是来源控制器
/******************************************************/

1、根据identifier去storyboard中找到对应的线,新建UIStoryboardSegue对象
            设置Segue对象的sourceViewController(来源控制器)
            新建并且设置Segue对象的destinationViewController(目标控制器)

2、调用sourceViewController的下面方法,做一些跳转前的准备工作并且传入创建好的Segue对象

/******************************************************/
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender;
// 这个sender是当初performSegueWithIdentifier:sender:中传入的sender
/******************************************************/

3、调用Segue对象的- (void)perform;方法开始执行界面跳转操作
            取得sourceViewController所在的UINavigationController
            调用UINavigationController的push方法将destinationViewController压入栈中,完成跳转

时间: 2024-10-12 21:56:48

控制器之间传递数据的方法(segue)的相关文章

在ViewController之间传递数据的方法【iOS】

在ViewController之间传递数据的方法有不少,博主这里总结两种最常用的方法给大家: 我们假设有 视图控制器A 和 视图控制器B,其中我们设视图控制器B 是由 视图控制器A通过Navigation controller Push过去的,也就是说视图控制器B是视图控制器A的子视图控制器. 下面我们就分别通过 A->B 和 B->A传递数据说明两种在视图控制器之间传递数据的方法. 1.由视图控制器A传递数据给视图控制器B 这里,我的视图控制器A是 ViewController 视图控制器B

控制器向视图传递数据的方法

http://blog.csdn.net/sknice/article/details/42323791 http://www.cnblogs.com/wenjiang/archive/2013/06/07/3123100.html 使用Model对象 介绍Razor语法,让我们从Index.cshtml文件的第一行开始: @model MvcApplication1.Models.Product Razor语句都是以@符号开始的.每个视图都有自己的Model属性(通过@Model调用).上面这

控制器向视图传递数据

1.ViewData:可存放任意类型数据,使用时需要转换,ViewData[“Info”]="hello",适合传递单个数据: 2.ViewBag:是对ViewData的封装,可读取ViewData保存的数据,反之亦然,ViewBag.stu=objStudent: 3.TempData:可跨视图,跨控制器传,跨动作方法之间传递数据,使用时需要转换数据类型,TempData["admin"]=objAdmin;临时保  存数据,一旦使用,则被清除: 4.View()

Android 笔记-Fragment 与 Activity之间传递数据

Fragment 与 Activity之间传递数据有两种方法,一种是使用setArgument,一种是使用接口回调.下面先学习第一种方法. (1)使用setArgument方法: 为了便于理解,我在这里打个比喻:假如Activity是皇帝,它设立了三个部门(如三省六部),分别是Fragment1,Fragment2和Fragemnt3: 现在他现在要吩咐部门Fragment1去做一些事情,比如说:领兵攻打岛国!!好,它肯定不自己跑去告诉该部门的. 一般来说,会有个宰相或者太监总管来负责皇帝口谕是

Android笔记Fragment与Activity之间传递数据

Fragment 与 Activity之间传递数据有两种方法,一种是使用setArgument,一种是使用接口回调.下面先学习第一种方法. (1)使用setArgument方法: 为了便于理解,我在这里打个比喻:假如Activity是皇帝,它设立了三个部门(如三省六部),分别是Fragment1,Fragment2和Fragemnt3: 现在他现在要吩咐部门Fragment1去做一些事情,比如说:领兵攻打岛国!!好,它肯定不自己跑去告诉该部门的. 一般来说,会有个宰相或者太监总管来负责皇帝口谕是

【MVC架构】——怎样利用Json在View和Controller之间传递数据

在MVC架构中,尽管非常多东西和三层非常相似,可是也有非常大的差别.就比方传递数据.在三层架构中,传递数据就仅仅要一层返回,另外一层用同样类型的变量来接收即可了.在MVC中,事实上原理是一样的,Controller中的方法返回Json字符串.然后View来接收.或者反过来,不同的就是这之间须要一个序列化和反序列化的过程. 本文就简介利用Json在View和Controller之间传递数据的一个方面,大致从双方面介绍,一是什么是Json,二是怎样实现. 什么是Json 一.概念 百度百科说:JSO

ios 页面跳转之间传递数据----通过delegate

主要参考了这篇博客http://mobile.51cto.com/iphone-284116.htm 主要用到了,两个类,一个delegate a类,调用b类,当b类执行之后,需要把一个数据传递给a类,a类把这个数据显示出来. 1.delegate,就这一个头文件就足够了.在类中去实现这个代理方法 #import <Foundation/Foundation.h> @protocolUIViewPassValueDelegate - (void)passValue:(NSString*)val

mvc如何使用JavaScript在view和controller之间传递数据

在一般的BS项目开发中,我们经常需要在前台和后台之间传递数据,mvc架构中,也需要在view和controller之间传递数据,那么我们应该如何实现呢? view想controller传递数据:view中代码 <li>@Html.ViewComponent().WfSaveLink(Model).Id("saveToLink").OnBeforeDo("externalData")</li> <scriptlanguage="

QTP多个Action之间传递参数的方法详解

点击打开链接 脚本的朋友们都会碰到多个Action之间传递参数的问题,想当年我也是研究了好久才成功的,网上虽然有很多文章都在讲这个问题,但是大多都是雷同的抄来抄去不能解决实际问题,也有可能是我太笨了吧.下面我们来详细讲一下QTP多个Action之间传递参数的方法. 一.假设Action1调用Action2并且Action1传递参数给Action2 1.Action1的代码及设置 '定义两个变量 Dim strMessA:strMessA = "我是" Dim strMessB:strM