<a target=_blank href="http://baidu.com" target="_blank">github</a>
、//
// LoginViewController.m
// Contact
//
// Created by Jiexiang on 15/11/15.
// Copyright © 2015年 Jiexiang. All rights reserved.
//
#import "LoginViewController.h"
#import "MBProgressHUD+MJ.h"
@interface LoginViewController ()
@property (weak, nonatomic) IBOutlet UITextField *nameField;
@property (weak, nonatomic) IBOutlet UITextField *pwdField;
@property (weak, nonatomic) IBOutlet UIButton *btnLogin;
- (IBAction)btnLoginAction;
@end
@implementation LoginViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 添加观察者
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(txtChange) name:UITextFieldTextDidChangeNotification object:self.nameField];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(txtChange) name:UITextFieldTextDidChangeNotification object:self.pwdField];
}
- (void)txtChange {
self.btnLogin.enabled = (self.nameField.text.length && self.pwdField.text.length);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
// 点击了登录
- (IBAction)btnLoginAction {
if (![self.nameField.text isEqualToString:@"admin"]) {
[MBProgressHUD showError:@"账号不正确"];
return;
}
if(![self.pwdField.text isEqualToString:@"123"]) {
[MBProgressHUD showError:@"密码错误"];
return;
}
// 显示遮罩
[MBProgressHUD showMessage:@"加载中"];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[MBProgressHUD hideHUD];
// 根据关键字跳转
[self performSegueWithIdentifier:@"toContact" sender:nil];
});
}
@end
学习oc基础,看的是极客学院的视频教程。视频短小,肤浅,我不是在批评它们,这恰恰是初学者喜欢和适合的。刚接触就跟你讲点高深的知识会让初学者产生挫败感的,慢慢积累,慢慢深入。
零零散散地学了一些东西,在这里总结一下,归类。
字典
在java里面有一个很常用的知识,就是键值对。如下:
Map<String, String> map = new HashMap<>();
map.put("name", "xiaoming");
map.put("sex", "man");
在oc里面,类似map的数据结构叫做:字典。如下:
NSDictionary *dic = @{@"name":@"zhangsan", @"sex":@"man"};
NSLog(@"%@", dic);
NSLog(@"%@", [dic objectForKey:@"name"]);
数组
NSArray *arr = @[@"abc", @"def", @"aaa"];
for (int i = 0; i < [arr count]; i++) {
NSLog(@"%@", [arr objectAtIndex:i]);
}
还有一种常用的方法是把字符串都放到一个配置文件中,需要的话再去里面读取。如图:
读取字符串的方法:
NSArray *arr = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"]];
for (int i = 0; i<[arr count]; i++) {
NSLog(@"%@", [arr objectAtIndex:i]);
}
但是我死活读取不了,教程是使用的xcode5的版本,plist文件放入了项目的Supporting Files文件夹。我新建的osx的命令行项目,并没有这个文件夹,明天再把这个问题克服。
以上是oc里面的数组,很好看懂,常用的是可变长数组,明天再上。
Get,Set方法
新建一个People的类:
以上分别是.h和.m文件,使用的@property注入,就会自动生成好age的get和set方法。
再开看看调用:
帅,Java的get,set全靠自己写代码,或者编译器自动生成一大串方法。
工厂方法
名字听得让人生畏,但是也可以从java的世界里找到类似的语法。还是新建一个People的类:
上面分别上.h和.m文件,接下来看看如何调用:
十分类似于java的构造方法哈,但是老师也说了,只是类似,概念不一样。
好了,写累的,睡觉了,不停积累。