【iOS7的一些总结】3、视图控制器ViewControllers之间的数据传递(2)

简介: 上文中记录了在手写代码实现UI的情况下,界面切换时不同视图控制器之间数据传递的机制。显示和消除界面使用的函数时presentViewController和dismissViewController函数,数据传递则可以采用代理、通知等机制。

上文中记录了在手写代码实现UI的情况下,界面切换时不同视图控制器之间数据传递的机制。显示和消除界面使用的函数时presentViewController和dismissViewController函数,数据传递则可以采用代理、通知等机制。本文记录的是使用storyboard实现界面的情况下,采用segue相关的方法实现与上文中相同的功能。

首先要做的是新建一个单视图工程,建立完成后会生成一组(一个头文件和一个源文件称为一组)AppDelegate类,一组ViewController类,一个storyboard以及其他一些辅助文件。然后需要新建一个视图控制器类,使用快捷键command+N,选择Objective-C类,新建一组名为FirstSubViewController的视图控制器继承自UIViewController。

下面在storyboard中添加各种控件。按照之前的设计,将一个Label和一个Button加入到第一个sence中。然后,在storyboard中拖入一个新的视图控制器,在其中加入一个TextField和一个Button。同时别忘了给控件添加IBOutlet和IBAction,以及将第二个界面的ViewController类改为我们之前新建好的FirstSubViewController类

在不同的界面之间建立segue非常简单,只需要在触发控件(比如Button)上按住Ctrl并拖动至新的界面,并在弹出菜单中选择Modal选项。在Attribute菜单中为segue添加一个ID,然后用类似的方法将第二个ViewController的按钮segue到第一个界面上。

然后一个在两个界面之间的segue就已经建立完成,如下图所示。

此时运行一下程序将会发现,从第一个界面中点击“显示下一界面按钮”,将会跳转到第二个界面中;点击“返回上一界面”,将会跳回最初的界面。

然后实现让第一个界面中的Label获取第二个界面中TextField中的内容,实现方法很简单,即在第二个界面的视图控制器中实现prepareForSegue函数即可。

在ViewController.h中添加一个property,用于接收传过来的字符:

@property (nonatomic,copy) NSString *stringToReceive;

需要注意的是,不要试图将UILabel类型的IBOutlet声明为公开属性用于接收字符串,因为在下面的prepareForSegue的方法中,不能直接获取到有效的Label实例。

然后再viewDidLoad函数中判断该属性是否为空,不为空则赋给标签:

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    if (_stringToReceive != Nil)
    {
        _showText.text = _stringToReceive;
    }
}

在firstSubViewController中实现函数:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"goBackToPreviousViewController"])
    {
        if ([segue.destinationViewController isKindOfClass:[ViewController class]])
        {
            ViewController *vc = (ViewController *)segue.destinationViewController;
            vc.stringToReceive = _inputText.text;
        }
    }
}
这里面“goBackToPreviousViewController”是自己定义的segue ID。

自此,整个工程就已经完成了,运行测试一下发现一切正常。

本文和上文的两个demo已经上传到了资源页,需要的话可以下载作为参考。

目录
相关文章
|
3月前
|
存储 iOS开发 开发者
使用克魔助手进行iOS数据抓包和HTTP抓包的方法详解
使用克魔助手进行iOS数据抓包和HTTP抓包的方法详解
47 0
|
3月前
|
Web App开发 网络安全 Android开发
🚀2023最新版克魔助手抓包教程(9) - 克魔助手 IOS 数据抓包
在移动应用程序的开发中,了解应用程序的网络通信是至关重要的。数据抓包是一种很好的方法,可以让我们分析应用程序的网络请求和响应,了解应用程序的网络操作情况。克魔助手是一款非常强大的抓包工具,可以帮助我们在 Android 和 iOS 平台上进行数据抓包。本篇博客将介绍如何使用克魔助手在 iOS 平台上进行数据抓包。
|
存储 iOS开发
iOS小技能: get 和post 布尔值参数处理、按照时间分页的数据重复的处理
1. get 和post 布尔值参数处理:如果后台Bool 参数没有同时支持【 0,1】 ;和【 true false】,get请求的时候就需要特殊处理。 2. 按照时间分页的数据重复的处理
144 0
iOS小技能: get 和post 布尔值参数处理、按照时间分页的数据重复的处理
|
编解码 iOS开发
ios开发:友盟移动数据统计分析详解
基本指标主要包括:新增用户、启动次数、时段累计日活、分时活跃用户 每个指标都包括具体数值、相对于昨天的增长率。 每个指标都分:今日、昨日、7天前、30天前四个折线图提供分析。
379 0
ios开发:友盟移动数据统计分析详解
|
存储 SQL 数据库
iOS 数据持久化方案-Realm的使用(下)
iOS 数据持久化方案-Realm的使用(下)
497 0
iOS 数据持久化方案-Realm的使用(下)