通知模式实现两个textField传值及模态视图——iOS开发

利用通知模式,实现两个不同界面的textField之间的传值,在界面二输入字符,传值到前一界面的textField。

界面的切换,这里临时先用模态视图实现。(重点在传值。所以没纠结设计界面排版。丑了点大家见谅)

大家不要看代码看上去好像挺多。由于我没使用storyboard/xib,是代码实现布局,所以通知和模态视图切换的代码非常少~


实现效果:

点击下一页按钮,进入界面二:

在textField处输入字符串:

点击返回按钮,回到界面一。此时界面一的textField处也有字符串


代码部分:



AppDelegate.m


#import "AppDelegate.h"
#import "ViewController1.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible]; ViewController1 *vc1 = [[ViewController1 alloc] init];
self.window.rootViewController = vc1; return YES;
}

ViewController1.m


#import "ViewController1.h"
#import "ViewController2.h" @interface ViewController1 ()
{
UITextField *text1;
}
@end @implementation ViewController1 - (void)viewDidLoad {
[super viewDidLoad]; self.view.backgroundColor = [UIColor greenColor]; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, 100, 50)];
label.text = @"界面一";
[self.view addSubview:label]; text1 = [[UITextField alloc] initWithFrame:CGRectMake(50, 150, 100, 50)];
text1.backgroundColor = [UIColor whiteColor];
[self.view addSubview:text1]; UIButton *button1 = [[UIButton alloc] initWithFrame:CGRectMake(50, 250, 100, 50)];
[button1 addTarget:self action:@selector(pushButtonAction:) forControlEvents:UIControlEventTouchUpInside];
[button1 setTitle:@"下一页" forState:UIControlStateNormal];
button1.backgroundColor = [UIColor blackColor];
[self.view addSubview:button1]; // 注冊观察者
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(returnAction:) name:@"chuanzhi" object:nil]; // Do any additional setup after loading the view.
} - (void)returnAction:(NSNotification *)text {
text1.text = text.userInfo[@"returnInfo"];
} - (void)pushButtonAction:(UIButton *)btn {
ViewController2 *vc2 = [[ViewController2 alloc] init];
vc2.modalPresentationStyle = UIModalPresentationFullScreen; //切换效果
[self presentViewController:vc2 animated:YES completion:nil];
}

ViewController2.m


#import "ViewController2.h"

@interface ViewController2 ()
{
UITextField *text2;
}
@end @implementation ViewController2 - (void)viewDidLoad {
[super viewDidLoad]; self.view.backgroundColor = [UIColor blueColor]; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, 100, 50)];
label.text = @"界面二";
[self.view addSubview:label]; text2 = [[UITextField alloc] initWithFrame:CGRectMake(50, 150, 100, 50)];
text2.backgroundColor = [UIColor whiteColor];
[self.view addSubview:text2]; UIButton *button2 = [[UIButton alloc] initWithFrame:CGRectMake(50, 250, 100, 50)];
[button2 addTarget:self action:@selector(returnButtonAction:) forControlEvents:UIControlEventTouchUpInside];
[button2 setTitle:@"返回" forState:UIControlStateNormal];
button2.backgroundColor = [UIColor blackColor];
[self.view addSubview:button2]; // Do any additional setup after loading the view.
} - (void)returnButtonAction:(UIButton *)btn {
NSDictionary *dic = @{@"returnInfo" : self->text2.text};
NSNotification *notification = [NSNotification notificationWithName:@"chuangzhi" object:nil userInfo:dic];
[[NSNotificationCenter defaultCenter] postNotification:notification]; [self dismissViewControllerAnimated:NO completion:nil];
}

通知模式实现两个textField传值及模态视图——iOS开发的更多相关文章

  1. Objective-C(十九、通知-消息发送模式之中的一个)——iOS开发基础

    结合之前的学习笔记以及參考<Objective-C编程全解(第三版)>,对Objective-C知识点进行梳理总结. 知识点一直在变.仅仅是作为參考.以苹果官方文档为准~ 十九.通知-消息 ...

  2. iOS开发- 界面传值(1)-通知模式(广播)

    之后的几篇博客, 记录下不同界面间传值的经常使用办法. 这篇文章记录广播的方式. iOS的设计模式中,通知模式也是当中重要的模式之中的一个,Notification直译为通知,事实上本人认为叫做广播模 ...

  3. Android消息通知(notification)和PendingIntent传值

    通知栏的自定义布局:转:http://blog.csdn.net/vipzjyno1/article/details/25248021 拓展 实现自定义的通知栏效果: 这里要用到RemoteViews ...

  4. 探究Repository模式的两种写法与疑惑

    现如今DDD越来越流行,园子里漫天都是介绍关于它的文章.说到DDD就不能不提Repository模式了,有的地方也叫它仓储模式. 很多时候我们对Repository都还停留在Copy然后使用的阶段, ...

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

    iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)   使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值: 先说一下思想: ...

  6. 内核知识第12讲,SSDT表.以用户模式到系统模式的两种方式.

    内核知识第12讲,SSDT表.以用户模式到系统模式的两种方式. 一丶IDT解析. 我们知道.IDT表中存放着各种中断信息.比如当我们调用int 3的时候,则会调用IDT表中的第三项来进行调用. 而函数 ...

  7. UIButton的两种block传值方式

    UIButton的两种block传值方式 方式1 - 作为属性来传值 BlockView.h 与 BlockView.m // // BlockView.h // Block // // Create ...

  8. 单例Singleton模式的两种实现方法

    在设计模式中,有一种叫Singleton模式的,用它可以实现一次只运行一个实例.就是说在程序运行期间,某个类只能有一个实例在运行.这种模式用途比较广泛,会经常用到,下面是Singleton模式的两种实 ...

  9. iOS开发笔记7:Text、UI交互细节、两个动画效果等

    Text主要总结UILabel.UITextField.UITextView.UIMenuController以及UIWebView/WKWebView相关的一些问题. UI细节主要总结界面交互开发中 ...

随机推荐

  1. C# Winform C/S系统快速开发平台(源码+原创)

    C/S系统开发框架-企业版 V4.0 (Enterprise Edition) 简介: http://www.csframework.com/cs-framework-4.0.htm 适用软件:适合开 ...

  2. hw-text1

    Text 1 测试题 python是什么类型的语言? 解释型语言,是脚本语言 百娘(脚本语言是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语 ...

  3. iOS: AFNetworking手动配置(iOS7.1, AF2.2.4)

    一.下载AFNetworking. 二.将AFNetworking-master下的AFNetworking目录拖入到项目中 三.为项目添加Linking to a Library or Framew ...

  4. Hibernate 注意命名与数据库关键字的冲突 处理方法

    比如你映射了一个名称为key的属性,这是数据库所不允许的,因为它是数据库的关键字. 因此,你必须为此属性添加一对符号,即键盘上“1”键的左边的按键.

  5. Eclipse 项目有红感叹号、小红叉

    红感叹号: 问题原因]:工程中classpath中指向的包路径错误 [解决办法]:右键项目名称 BuildPath ---> Configure Build Paht...中,然后上面有几个选项 ...

  6. C 常用的输入输出 栈 哈希 文件写读 实现 字符串处理

    #include "stdafx.h"#include <stdio.h>#include <string.h>#include <stdlib.h& ...

  7. Microsoft Internet Explorer 远程代码执行漏洞(CVE-2013-3186)(MS13-059)

    漏洞版本: Microsoft Internet Explorer 6 - 10 漏洞描述: BUGTRAQ ID: 61663 CVE(CAN) ID: CVE-2013-3186 Windows ...

  8. Linux Shell编程(13)——数字常量

    除非一个数字有特别的前缀或符号,否则shell脚本把它当成十进制的数.一个前缀为0的数字是八进制数.一个前缀为0x的数字是十六进制数.一个数用内嵌的#来求值则看成BASE#NUMBER(有范围和符号限 ...

  9. Java项目中使用配置文件配置

    private String readConfig() { Properties p = new Properties(); InputStream in = getClass().getClassL ...

  10. haproxy实现mysql slave负载均衡

    简单画一个图: 一.服务器规划 192.168.116.132 (master)  -->写操作 192.168.116.129 (slave1)  -->读操作 192.168.116. ...