2016-1-6第一个完整APP 私人通讯录的实现 2:增加提示用户的提示框,监听文本框
一:在登录时弹出提示用户的提示框:
1.使用第三方框架。
2.在登陆按钮点击事件中增加如下代码:
- (IBAction)loginBtnClicked {
NSString *acount = self.acountField.text;
NSString *password = self.passwordField.text;
// 跳出正在登陆的提示框
[MBProgressHUD showMessage:@"正在登陆"];
// 模拟加载中 QAQ 感觉好喜感啊
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// 隐藏正在登陆的提示框
[MBProgressHUD hideHUD];
// 判断用户账目密码是否输入正确,跳出提示并跳转界面
if ([acount isEqualToString:@"zhangsan"]&&[password isEqualToString:@"123"]) {
[self performSegueWithIdentifier:@"ContactsViewController" sender:nil];
[MBProgressHUD showSuccess:@"登陆成功"];
}else{
[MBProgressHUD showError:@"账号密码错误"];
}
}
);
}
3.在- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender方法中给目标控制器专递参数
代码如下
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
#warning 先获得Segue的目标控制器,但是设置的是新的一个contactVc,为什么Segue目标控制器的属性也会改变?
id destcontroller = segue.destinationViewController;
if ([destcontroller isKindOfClass:[contactTableViewController class]]) {
contactTableViewController *contactVc = destcontroller;
contactVc.name = self.acountField.text;
}
}
这段代码有个不明白的地方,自己打了#waring,暂时想不通,以后来解决吧~
4.实际效果如下:

二:监听文本登陆框
1.使用通知中心,代码如下:
- (void)viewDidLoad {
[super viewDidLoad];
self.loginBtn.enabled = NO;
// 通知中心监听文本改变的情况,
// 建立通知中心,设置观察者订阅通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.acountField];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.passwordField];
}
//实现接受到文本改变的通知后 controller要做的事情
- (void)textChange
{
// 只有在账户和密码在文本登陆框中都有长度时,登陆按钮才可用
self.loginBtn.enabled = (self.acountField.text.length >= 5 && self.passwordField.text.length >= 3);
}
实际效果:

2.也可以直接给textField添加事件,代码如下:
[self.acountField addTarget:self action:@selector(textChange) forControlEvents:UIControlEventEditingChanged ];
[self.passwordField addTarget:self action:@selector(textChange) forControlEvents:UIControlEventEditingChanged ];
也可以直接在mainstroyboard中连线:

2016-1-6第一个完整APP 私人通讯录的实现 2:增加提示用户的提示框,监听文本框的更多相关文章
- 2016-1-5第一个完整APP 私人通讯录的实现 1:登录界面及跳转的简单实现2
---恢复内容开始--- 实际效果如上 一:Segue的学习 1.什么是Segue: Storyboard上每一根用来界面跳转的线,都是一个UIStoryboardSegue对象(简称Segue) ...
- 2016-1-7第一个完整APP 私人通讯录的实现 6:在联系人界面增加删除联系人的功能
一:在viewDidLoad方法中代码添加一个UIBarButtonItem,并将其的类型设置成垃圾桶,代码如下: - (void)viewDidLoad { [super viewDidLoad]; ...
- 2016-1-7第一个完整APP 私人通讯录的实现 5:保存数据
一:登陆界面 1):用户点击登陆按钮并成功登陆后,根据此时的开关情况选择是否保存数据,代码如下: "]) { [self performSegueWithIdentifier:@" ...
- 2016-1-6第一个完整APP 私人通讯录的实现 4:编辑联系人
一:建立编辑联系人的controller,并使其拥有模型contact,且有协议.代码如下 #import <UIKit/UIKit.h> #import "contact.h& ...
- 2016-1-6第一个完整APP 私人通讯录的实现 3:添加联系人
一:创建模型对象:contact用于存放数据,也便于读取加载 #import <Foundation/Foundation.h> @interface contact : NSObject ...
- App单个页面的最佳文本框个数是多少个?
[1].不同大小的手机屏幕,对应的App每页最佳文本框个数,是不同的. [1.1]如果是iPhone4的屏幕尺寸,分辨率为640x960px的时候, 文本框个数最大值为:2个文本框 [计算公式] 第 ...
- iOS 实时监听app的网络连接状态
实际iOS开发中,在网络通信中我们大部分使用第三方(只谈短链),譬如 AFNetworking.ASIHttpRequest(这个停更了,想必现在没多少人用),swift的 Alamofire 等. ...
- spring-boot rabbitMq 完整项目搭建,包括创建、发送、监听
写在开始 rabbitMq 代码按照三部分介绍 第一部分 交换机和队列的创建 第二部分 消息发送 第三部分 消息监听 第一部分 1 建立queue 2 建立exchange 3 exchange绑定q ...
- iOS开发UI篇—实现一个私人通讯录小应用【转】
转一篇学习segue不错的教程 一.该部分主要完成内容 1.界面搭建 2.功能说明 (1).只有当账号和密码输入框都有值的时候,登录按钮才能交互 (2). ...
随机推荐
- Python安装BeautifulSoup库(Windows平台下)
简介 参照官网Beautiful Soup4.4.0文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc/ 安装步骤 1.到https:// ...
- Log 日志级别
一直对于程序中的日志级别有点模糊,今天专门百度学习下.遂成此文: 日志记录器(Logger)是日志处理的核心组件.log4j具有5种正常级别(Level).: 1.static Le ...
- 20150206读书笔记<深入理解计算机系统>
●第一章 C是系统级编程的首选.C++显示支持抽象,属于应用级程序设计语言. 简单例子: 一个典型系统的硬件组成: 存储器的层次结构: 注:存储器层次结构的设计思想是,该层存储器作为下一层存储器的高速 ...
- BZOJ1520 [POI2006]Szk-Schools
裸的费用流啊... 建图:对于一个点p拆成两个p1和p2,S向p1连边,流量为1,费用为0:p2向T连边流量为1,费用为0 然后i1向a2到b2分别连边,不妨设i1向p2连边,流量为1,费用为|i - ...
- 解决ACTIVITI流程图设置字体不生效的问题
在ACTIVITI 5.15的版本中,有一个设置流程图的字体配置. 配置如下: <bean id="processEngineConfiguration" class=&qu ...
- LAMP整理
LAMP第一部分 查看编译了哪些软件:是编译时自动生成的 Cat /usr/local/apache2/build/config.nice 网站根目录存放处: /usr/local/apache2/h ...
- YouTube技术架构
谈不上翻译,就是摘录 1 billion video views per day 1.Apache 2.Python 3.Linux (SuSe) 4.MySQL 5.psyco, a dynamic ...
- HDU 3255 扫描线(立方体体积并变形)
Farming Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- Windows8 10设置程序为 系统默认浏览器
从win8 开始,MS修改了文件和协议的关联方式,普通的注册表修改是无效的. 必须使用组策略(group policy )对象GP才行. http://blogs.technet.com/b/mrml ...
- C- struct的使用
数组是二等公民,不能进行整体赋值,或者参数传递,或者作为返回值. But!如果封装在struct内部,就完全不一样了 #include <iostream> using namespace ...