ios开发基础之通讯录系统实战
基础知识 OC 基础
segue 的使用。delegate 代理的使用 自定义代理。面向对象思想 沙盒容器的数据持久化方案,
controller 之间的跳转 ,登录方法。UITableViewController的使用 导航条的使用等知识点的使用
我们使用最新的Xcode12。4 版本,配合最新的ios14.3系统和最新的mac os x系统,跑在 vmware 15虚拟机上面,需要电脑配置较高,否则比较卡顿;
实现的主要功能的截图。有些api虽然已经过期了,但是不影响使用。 ,先把过期的学好,再学新出的api函数
//
// LoginViewController.m
// 20-通讯录
//
// Created by 鲁军 on 2021/2/13.
//
#import "LoginViewController.h"
#import "MBProgressHUD+NJ.h"
#import "SVProgressHUD.h"
#import "ContactViewController.h"
@interface LoginViewController () <UITextFieldDelegate>
@property (weak, nonatomic) IBOutlet UITextField *usernameView;
@property (weak, nonatomic) IBOutlet UITextField *pwdView;
@property (weak, nonatomic) IBOutlet UIButton *loginBtn;
- (IBAction)loginClick:(id)sender;
@property (weak, nonatomic) IBOutlet UISwitch *remPwd;
@property (weak, nonatomic) IBOutlet UISwitch *autoLoginSw;
@end
@implementation LoginViewController
- (IBAction)remClick:(UISwitch *)sender {
if(!sender.isOn){
// self.autoLoginSw.on=NO;
[self.autoLoginSw setOn:NO animated:YES];
}
}
- (IBAction)autoLoginClick:(UISwitch *)sender {
if(sender.isOn)
{
// self.remPwd.on = YES;
[self.remPwd setOn:YES animated:YES];
}
}
//页面之间的传值
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
ContactViewController *contactVc = segue.destinationViewController;
[contactVc setUsername:self.usernameView.text];
}
- (IBAction)loginClick:(id)sender {
// [SVProgressHUD showWithStatus:@"正在登录" maskType:SVProgressHUDMaskTypeBlack];
[MBProgressHUD showMessage:@"正在登录"];
//模拟网络延时
dispatch_after(dispatch_time(DISPATCH_TIME_NOW,(int64_t)(3 * NSEC_PER_SEC)),dispatch_get_main_queue(), ^{
// [SVProgressHUD dismiss];
[MBProgressHUD hideHUD];
if([self.usernameView.text isEqualToString:@"1"] &&
[self.pwdView.text isEqualToString:@"1"]){
[self performSegueWithIdentifier:@"login2contact" sender:nil];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setBool:self.remPwd.isOn forKey:@"remPwdKey"];
[userDefaults setBool:self.autoLoginSw.isOn forKey:@"autoLoginKey"];
[userDefaults setObject:self.usernameView.text forKey:@"usernameViewKey"];
[userDefaults setObject:self.pwdView.text forKey:@"pwdViewKey"];
[userDefaults synchronize];
}
else{
//[SVProgressHUD showErrorWithStatus:@"用户名或者密码错误"];
[MBProgressHUD showError:@"用户名或者密码错误"];
}
});
}
- (void)viewDidLoad {
[super viewDidLoad];
[self.usernameView addTarget:self action:@selector(changeValue) forControlEvents:(UIControlEventEditingChanged)];
[self.pwdView addTarget:self action:@selector(changeValue) forControlEvents:(UIControlEventEditingChanged)];
self.usernameView.delegate =self;
//恢复状态
NSUserDefaults *ud=[NSUserDefaults standardUserDefaults];
self.remPwd.on = [ud boolForKey:@"remPwdKey"]