iOS項目-連絡人清單

來源:互聯網
上載者:User

標籤:

一,項目介紹

首先,簡單介紹一下這個項目的效果

進入程式,首先是登入頁面

登入頁面用到 NSUserDefault 記住登入密碼

 

然後是

 

然後是登入跳轉,用到MBProgressHUD

接著是連絡人清單 是一個UITableView

 

點擊+ 進入新增連絡人...頁面

點擊每行連絡人 進入編輯介面

 

 

點擊登出,彈出UIAlertController

 

 

 

 

二,進入代碼

 

首先 在SB中構建視圖的架構

 

 

 

然後建立幾個對應的控制器,並做好子類連結

 

 

然後實現 登入介面

首先添加觀察者,監視textfield的值的變化

 

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.nameTxtFiled];

    

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.pwdTextField];

    

 設定

NSUserDefaults

記住密碼

設定事件

 

-(void)textChange

{

    self.loginBtn.enabled = self.nameTxtFiled.text.length&&self.pwdTextField.text.length;

 

}

 設定每一個segwe的跳轉

 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    if ([segue.identifier isEqualToString:@"id"]) {

        ContactTableViewController *contactVC = segue.destinationViewController;

        contactVC.title = [NSString stringWithFormat:@"%@的連絡人清單",self.nameTxtFiled.text];

    }

 

 

}

 點擊事件

 

- (IBAction)loginClick {

    if (![self.nameTxtFiled.text isEqualToString:@"dsn"]) {

        [MBProgressHUD showError:@"使用者名稱錯誤"];

        return;

    }

    if(![self.pwdTextField.text isEqualToString:@"123"])

    {

        [MBProgressHUD showError:@"密碼錯誤"];

        return;

    }

    

    [MBProgressHUD showMessage:@"正在登陸,請等待...."];

    

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

        [MBProgressHUD hideHUD];

        [self performSegueWithIdentifier:@"id" sender:nil];

    });

    

    

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    [defaults setObject:self.nameTxtFiled.text forKey:usernameKey];

    [defaults setObject:self.pwdTextField.text forKey:userpassKey];

    [defaults setBool:self.switchbTN.on forKey:switchKey];

    

    [defaults synchronize];

    

    

}

 

 

#import "AddViewController.h"

#import "ModelContact.h"

 

@interface AddViewController ()

@property (weak, nonatomic) IBOutlet UITextField *contactField;

@property (weak, nonatomic) IBOutlet UITextField *numberField;

- (IBAction)addClick:(UIButton *)sender;

@property (weak, nonatomic) IBOutlet UIButton *addBtn;

 

@end

 

@implementation AddViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    

    

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.contactField];

    

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.numberField];

    

    

    // Do any additional setup after loading the view.

}

-(void)textChange

{

    self.addBtn.enabled = self.contactField.text.length && self.numberField.text.length;

    

}

 

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

 

    // Dispose of any resources that can be recreated.

}

 

/*

#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)addClick:(UIButton *)sender {

    

    [self.navigationController popViewControllerAnimated:YES];

    

    

    if ([self.delegate respondsToSelector:@selector(addContactWithAddViewController:addContact:)]) {

        ModelContact *contact = [[ModelContact alloc]init];

        contact.contact = self.contactField.text;

        contact.number = self.numberField.text;

        [self.delegate addContactWithAddViewController:self addContact:contact];

        

    }

    

}

 

 

 

#import "LoginViewController.h"

#import "ContactTableViewController.h"

#import "MBProgressHUD+MJ.h"

 

#define usernameKey @"name"

#define userpassKey @"pass"

#define switchKey @"switchKey"

 

 

@interface LoginViewController ()

@property (weak, nonatomic) IBOutlet UITextField *nameTxtFiled;

@property (weak, nonatomic) IBOutlet UITextField *pwdTextField;

@property (weak, nonatomic) IBOutlet UISwitch *switchbTN;

@property (weak, nonatomic) IBOutlet UIButton *loginBtn;

- (IBAction)loginClick;

 

@end

 

@implementation LoginViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    

    

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.nameTxtFiled];

    

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.pwdTextField];

    

    

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    self.nameTxtFiled.text = [defaults valueForKey:usernameKey];

    self.pwdTextField.text = [defaults valueForKey:userpassKey];

    self.switchbTN.on = [defaults boolForKey:switchKey];

    

    if (self.switchbTN.isOn) {

        self.pwdTextField.text = [defaults valueForKey:userpassKey];

        self.loginBtn.enabled = YES;

    }

    

    // Do any additional setup after loading the view.

}

 

-(void)textChange

{

    self.loginBtn.enabled = self.nameTxtFiled.text.length&&self.pwdTextField.text.length;

 

}

 

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

 

 

#pragma mark - Navigation

 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    if ([segue.identifier isEqualToString:@"id"]) {

        ContactTableViewController *contactVC = segue.destinationViewController;

        contactVC.title = [NSString stringWithFormat:@"%@的連絡人清單",self.nameTxtFiled.text];

    }

 

 

}

 

 

- (IBAction)loginClick {

    if (![self.nameTxtFiled.text isEqualToString:@"dsn"]) {

        [MBProgressHUD showError:@"使用者名稱錯誤"];

        return;

    }

    if(![self.pwdTextField.text isEqualToString:@"123"])

    {

        [MBProgressHUD showError:@"密碼錯誤"];

        return;

    }

    

    [MBProgressHUD showMessage:@"正在登陸,請等待...."];

    

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

        [MBProgressHUD hideHUD];

        [self performSegueWithIdentifier:@"id" sender:nil];

    });

    

    

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    [defaults setObject:self.nameTxtFiled.text forKey:usernameKey];

    [defaults setObject:self.pwdTextField.text forKey:userpassKey];

    [defaults setBool:self.switchbTN.on forKey:switchKey];

    

    [defaults synchronize];

    

    

}

@end

 

 

#import "EditViewController.h"

#import "ModelContact.h"

@interface EditViewController ()

@property (weak, nonatomic) IBOutlet UITextField *contactTxtField;

@property (weak, nonatomic) IBOutlet UITextField *numberTxtField;

- (IBAction)saveBtn:(UIButton *)sender;

@property (weak, nonatomic) IBOutlet UIButton *saveBtn;

- (IBAction)editClick:(UIBarButtonItem *)sender;

 

@end

 

@implementation EditViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    

    

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.contactTxtField];

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.numberTxtField];

    // Do any additional setup after loading the view.

    

    

    self.contactTxtField.text = self.contact.contact;

    self.numberTxtField.text = self.contact.number;

    

}

 

-(void)textChange

{

 

    self.saveBtn.enabled = self.contactTxtField.text.length && self.numberTxtField.text.length;

 

}

 

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

 

/*

#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)saveBtn:(UIButton *)sender {

 

        [self.navigationController popViewControllerAnimated:YES];

    

    if ([self.delegate respondsToSelector:@selector(editContactWithController:editContact:)]) {

        self.contact.contact = self.contactTxtField.text;

        self.contact.number = self.numberTxtField.text;

        [self.delegate editContactWithController:self editContact:self.contact];

    }

    

 

    

}

- (IBAction)editClick:(UIBarButtonItem *)sender {

    if (self.contactTxtField.enabled) {

        self.contactTxtField.enabled = NO;

        self.numberTxtField.enabled = NO;

        [self.view endEditing:YES];

        self.saveBtn.enabled = NO;

        sender.title = @"編輯";

        self.contactTxtField.text = self.contact.contact;

        self.numberTxtField.text = self.contact.number;

    }else{

    

        self.contactTxtField.enabled = YES;

        self.numberTxtField.enabled = YES;

        [self.view endEditing:NO];

        self.saveBtn.enabled = YES;

        sender.title = @"取消";

        

    }

    

}

@end

 github 地址https://github.com/Disneydusunan/10--DEMO-

 

iOS項目-連絡人清單

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.