你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS開發UI篇—實現一個私人通訊錄小應用(二)

iOS開發UI篇—實現一個私人通訊錄小應用(二)

編輯:IOS開發綜合
OS開發UI篇—實現一個私人通訊錄小應用(二)   一、實現功能說明   (1)點擊注銷按鈕,彈出一個對話框,點擊確定後移除當前棧頂的控制器,返回開始界面,點擊取消,不做任何操作。   注意:注銷按鈕的單擊事件已經進行了連線。實現-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex需要遵守UIActionSheetDelegate協議。   復制代碼  1 //注銷按鈕  2 - (IBAction)logoutBtn:(id)sender {  3       4     UIActionSheet *sheet =[[UIActionSheet alloc]initWithTitle:@"確定要注銷?" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:@"確定" otherButtonTitles: nil];  5       6     [sheet showInView:self.view];  7 }  8   9 #pragma mark-代理方法 10 -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 11 { 12     if (buttonIndex!=0)return; 13     //移除棧頂的控制器 14     [self.navigationController popViewControllerAnimated:YES]; 15 } 復制代碼 (2)當兩個文本框的狀態發生改變時,通知添加按鈕變為可用狀態。   知識點:通知(注冊監聽)   復制代碼  1 - (void)viewDidLoad  2 {  3     [super viewDidLoad];  4       5     //1.獲得通知中心  6     NSNotificationCenter *center=[NSNotificationCenter defaultCenter];  7     //2.注冊監聽  8     [center addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.nameFeild];  9     [center addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.phoneFeild]; 10 } 11  12  13  14 //當文本框內容改變的時候,通知self調用該方法 15 -(void)textChange 16 { 17     //判斷,如果兩個文本框的內容都改變(有值)的時候,添加按鈕變成可交互的 18     self.addBtn.enabled=(self.nameFeild.text.length>0&&self.phoneFeild.text.length>0); 19     NSLog(@"通知調用的事件"); 20 } 21  22 //臨終遺言 23 -(void)dealloc 24 { 25     [[NSNotificationCenter defaultCenter] removeObserver:self]; 26 } 復制代碼 (3)數據的逆傳(使用代理)   YYContatcsViewController.m文件   復制代碼   1 //   2 //  YYContatcsViewController.m   3 //  01-私人通訊錄(登錄頁面搭建)   4 //   5 //  Created by apple on 14-6-8.   6 //  Copyright (c) 2014年 itcase. All rights reserved.   7 //   8    9 #import "YYContatcsViewController.h"  10 #import "YYAddViewController.h"  11 #import "YYInfoModel.h"  12   13 //遵守協議  14 @interface YYContatcsViewController ()<UIActionSheetDelegate,YYAddViewControllerDelegate>  15 @property (strong, nonatomic) IBOutlet UITableView *tableview;  16   17 //數組,用來保存用戶添加的數據  18 @property(nonatomic,strong)NSMutableArray *array;  19   20 - (IBAction)logoutBtn:(id)sender;  21   22 @end  23   24 @implementation YYContatcsViewController  25   26   27 - (void)viewDidLoad  28 {  29     [super viewDidLoad];  30 }  31   32 //注銷按鈕  33 - (IBAction)logoutBtn:(id)sender {  34       35     UIActionSheet *sheet =[[UIActionSheet alloc]initWithTitle:@"確定要注銷?" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:@"確定" otherButtonTitles: nil];  36       37     [sheet showInView:self.view];  38 }  39   40 #pragma mark-代理方法  41 -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex  42 {  43     if (buttonIndex!=0)return;  44     //移除棧頂的控制器  45     [self.navigationController popViewControllerAnimated:YES];  46 }  47   48   49 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender  50 {  51     UIViewController *c=segue.destinationViewController;  52     YYAddViewController *addc=(YYAddViewController *)c;  53     addc.delegate=self;  54       55 }  56   57 #pragma mark-YYAddViewControllerDelegate  58 -(void)addViewControllerDidAddBtn:(YYAddViewController *)addViewController contatc:(YYInfoModel *)contatc  59 {  60     //1.把數組保存到數組中  61 //    [self.Info addObject:contatc];  62 //    //2.刷新表格  63 //    NSLog(@"%@",contatc);  64 //    NSLog(@"%@",self.Info);  65 //    [self.tableview reloadData];  66     NSLog(@"%@,%@",contatc.name,contatc.phone);  67     [self.array addObject:contatc];  68     [self.tableview reloadData];  69   70 }  71   72 -(NSMutableArray *)array  73 {  74     if (_array==Nil) {  75         _array=[NSMutableArray array];  76     }  77     return _array;  78 }  79 #pragma mark-tableview的數據源  80 //一共有多少行  81 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section  82 {  83 //       return self.Info.count;  84     return self.array.count;  85 }  86 //每組每行的cell  87 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  88 {  89     static NSString *identifier=@"info";  90     //先去緩存中取。如果緩存中沒有,那麼就到storyboard中去查找  91     UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:identifier];  92     //在storyboard中設置cell的標識符為info  93       94     //設置cell的數據  95 //      96 //     UITableViewCell *cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:Nil];  97       98     YYInfoModel *info=self.array[indexPath.row];  99     cell.textLabel.text=info.name; 100     cell.detailTextLabel.text=info.phone; 101      102  103     //返回cell 104     return cell; 105 } 106 @end 復制代碼 YYAddViewController.h文件   復制代碼  1 //  2 //  YYAddViewController.h  3 //  01-私人通訊錄(登錄頁面搭建)  4 //  5 //  Created by 孔醫己 on 14-6-8.  6 //  Copyright (c) 2014年 itcase. All rights reserved.  7 //  8   9 #import <UIKit/UIKit.h> 10 @class YYAddViewController, YYInfoModel; 11 //自定義一個協議,讓上一個控制器(YYContatcsViewController)成為當前控制器的代理 12  13 //@protocol  YYAddViewControllerDelegate <NSObject> 14 // 15 ////協議方法 16 //-(void)addViewControllerDidAddBtn:(YYAddViewController *)addViewController contatc:(YYInfoModel *)contatc; 17  18 @protocol YYAddViewControllerDelegate <NSObject> 19  20 //- (void)editViewControllerDidAddBtn:(NJEditViewController *)editViewController name:(NSString *)name number:(NSString *)phoneNumber; 21  22 - (void)addViewControllerDidAddBtn:(YYAddViewController *)editViewController contatc:(YYInfoModel *)contatc; 23  24 @end 25  26 @interface YYAddViewController : UIViewController 27  28 //新增一個代理屬性 29 @property(nonatomic,strong)id<YYAddViewControllerDelegate> delegate; 30  31 @end 復制代碼 YYAddViewController.m文件   復制代碼  1 //  2 //  YYAddViewController.m  3 //  01-私人通訊錄(登錄頁面搭建)  4 //  5 //  Created by 孔醫己 on 14-6-8.  6 //  Copyright (c) 2014年 itcase. All rights reserved.  7 //  8   9 #import "YYAddViewController.h" 10 #import "YYInfoModel.h" 11  12 @interface YYAddViewController () 13 //姓名輸入框 14 @property (weak, nonatomic) IBOutlet UITextField *nameFeild; 15 //電話號碼輸入框 16 @property (weak, nonatomic) IBOutlet UITextField *phoneFeild; 17 //添加按鈕 18 @property (weak, nonatomic) IBOutlet UIButton *addBtn; 19  20 //添加按鈕的點擊事件 21 - (IBAction)addBtnOnclick:(id)sender; 22  23 @end 24  25 @implementation YYAddViewController 26  27  28 #pragma mark- 監聽是否添加 29 - (void)viewDidLoad 30 { 31     [super viewDidLoad]; 32      33     //1.獲得通知中心 34     NSNotificationCenter *center=[NSNotificationCenter defaultCenter]; 35     //2.注冊監聽 36     [center addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.nameFeild]; 37     [center addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.phoneFeild]; 38 } 39  40  41  42 //當文本框內容改變的時候,通知self調用該方法 43 -(void)textChange 44 { 45     //判斷,如果兩個文本框的內容都改變(有值)的時候,添加按鈕變成可交互的 46     self.addBtn.enabled=(self.nameFeild.text.length>0&&self.phoneFeild.text.length>0); 47     NSLog(@"通知調用的事件"); 48 } 49  50 //臨終遺言 51 -(void)dealloc 52 { 53     [[NSNotificationCenter defaultCenter] removeObserver:self]; 54 } 55  56  57 - (void)viewDidAppear:(BOOL)animated 58 { 59     // 3.主動召喚出鍵盤 60     [self.nameFeild becomeFirstResponder]; 61     //    [self.nameField resignFirstResponder]; 62 } 63  64  65 - (IBAction)addBtnOnclick:(id)sender { 66      67     //點擊添加按鈕後,把數據保存到模型數組中 68     //跳轉 69     [self.navigationController popViewControllerAnimated:YES]; 70      71     //1.把當前界面文本框中的信息保存到模型中 72     YYInfoModel *info=[[YYInfoModel alloc]init]; 73     info.name=self.nameFeild.text; 74     info.phone=self.phoneFeild.text; 75      76     //2.數據逆傳(把當前控制器view的數據傳遞到上一個控制器的view中) 77     //使用代理,自定義一個代理,並使用代理傳遞數據 78     //如果代理方法存在就通知代理調用該方法,傳遞數據 79     if ([self.delegate respondsToSelector:@selector(addViewControllerDidAddBtn:contatc:)]) { 80         NSLog(@"sadafaf"); 81         [self.delegate addViewControllerDidAddBtn:self contatc:info]; 82     } 83   84     NSLog(@"dddd"); 85 } 86 @end
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved