IOS開發---菜鳥學習之路--(四)-登錄界面

本篇的內容其實你們 參照橘子的那本開發的書的話  上面講解的是更詳細的 一些實現.web

我這邊惟一的區別就是 作了網絡數據的獲取 以及 驗證成功後 進行界面的跳轉..json

第四篇了 本篇主講登錄模塊網絡

首先先放效果圖app

圖一ide

圖二ui

圖三atom

 

首先總體效果如圖一所示spa

2個uilabel3d

2個textfield code

1個Button 按鈕

實現功能的話有如下幾點

1.其中輸入帳號後點擊 NEXT 跳到 密碼框.

2.點擊密碼輸入框 顯示DONE 點擊done的話 直接進行登錄驗證

3.點擊背景 將 鍵盤隱藏

4.點擊 登錄按鈕 進行登錄 驗證 

 

首先先新建一個項目.以下圖,選擇單一視圖項目

而後 將對應的控件拖拽到對應的位置.並修改文字描述

排成圖一的樣子

控件的細節屬性我就不作介紹了,選擇對應的Textfield控件 分別在 Placeholder中輸入"請輸入帳號" 和"請輸入密碼" 該屬性就是 在文本輸入框沒有輸入內容時顯示的數據

完成後的效果以下

還有個兩個屬性分別是return key 和Secure  

修改return key的話就是修改 鍵盤上的結束鍵.這個你們能夠修改下看看就知道了

而後是Secure屬性.該屬性就是常見的密碼選項.選擇了後 輸入的內容就會顯示爲****** 因此在密碼的Textfield  的屬性中須要選擇該屬性

 

.xib文件暫時就修改這麼多了. 

而後是.h文件 .仍是同樣的 直接上代碼

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
{
    UIButton *loginButton;
    UITextField *pwdTextField;
    UITextField *uidTextField;
}
@property(nonatomic,retain) IBOutlet UIButton *loginButton;
@property(nonatomic,retain) IBOutlet UITextField *uidTextField;
@property(nonatomic,retain) IBOutlet UITextField *pwdTextField;

-(IBAction)loginButtonPressed:(id)sender;
-(IBAction)backgroundTap:(id)sender;
-(IBAction)uidDidEndOnExit:(id)sender;
-(void)initNav:(NSString *)pid;
@end

這邊我分別定義了三個屬性和4個方法 

loginButton  pwdTextField  uidTextField  

這三個就分別對應着咱們 的 登錄按鈕 . 密碼輸入框和帳號輸入框三個稍後會講怎麼樣造成關聯

 

而後是4個方法分別用來處理  登錄按鈕點擊事件, 背景點擊事件 , 帳號輸入完成事件,以及登錄成功後界面切換事件  initNav

 

而後回到XIB文件

按住CTRL鍵同時左鍵點擊 而後移動鼠標,會出現一條藍色的線. 將藍色的線鏈接到 帳號輸入框上

便會出現剛剛在.H文件中的屬性.而後選擇與之相對應的 屬性 ,就完成了鏈接了(這邊是QQ截圖的  有點暗可能看步清楚.不過你們試下就知道了)

而後用一樣的方法 分別鏈接 密碼輸入框和按鈕. 就完成了鏈接

 

接下來咱們選擇 帳號輸入框 在右邊屬性欄選擇事件 

選擇Did End on Exit 點擊右邊的小圓圈 一樣的拉動話,會出現一條藍線,而後 拖拽到左邊的 

而後選擇uidDidEndOnExit事件,

用一樣的方法 分別將密碼輸入 的Did End on Exit事件鏈接到 loginButtonPressed

登錄按鈕的Touch up inside 事件鏈接到loginButtonPressed

這樣的話 咱們就將 對應的事件綁定到對應的控件上面了 

最後還有一個點擊背景的事件這邊有點複雜

首先須要選擇 背景

而後找到屬性中的class 將其修改成UIControl  不然的話 他是沒有對應的點擊事件的

而後一樣的 選擇 tuochdown 事件 鏈接到 

backgroundTap 事件上去

 

最後進入.m文件實現具體的 操做

好了直接上代碼

//點擊背景隱藏輸入框
-(IBAction)backgroundTap:(id)sender
{
    [pwdTextField resignFirstResponder];
    [uidTextField resignFirstResponder];
    
}
-(IBAction)uidDidEndOnExit:(id)sender{
    [pwdTextField  becomeFirstResponder];
}

這個方法 分別是 移除對應的焦點,以及使某個控件成爲焦點 ..就實現了 點擊背景 .隱藏鍵盤 以及點擊NEXT 跳轉到 密碼輸入框的功能

 

而後就是咱們的重點了 

longinbutton點擊事件

-(void)loginButtonPressed:(id)sender{
    GetWebInfo *getwebinfo=[GetWebInfo alloc];
    NSString *myparameters=[[NSString alloc] initWithString:[NSString stringWithFormat:@"&Method=Login&uid=%@&pwd=%@",uidTextField.text,pwdTextField.text]];
    getwebinfo.parameters=myparameters;
    NSString *webReturnMessage=[getwebinfo dogetWebInfo];
    NSData* jsonData=[webReturnMessage dataUsingEncoding:NSUTF8StringEncoding];
    NSArray *keys =   [NSJSONSerialization
                       JSONObjectWithData:jsonData
                       options:NSJSONReadingMutableContainers
                       error:nil];
    NSString *result=[keys valueForKey:@"Result"];
    if([result isEqual:@"False"])
    {
        UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"登錄失敗" message:@"密碼錯誤或者網絡鏈接失敗" delegate:self
                                            cancelButtonTitle:@"肯定" otherButtonTitles: nil];
        [alert show];
    }
    else{

        [self initNav:[[keys valueForKey:@"Data"] valueForKey:@"ID"]];
    
    }
 }

首先是利用咱們前兩篇建的GETWEBINFO 類來獲取數據

而後判斷是否登陸成功

若是登陸成功就調用initNav方法 並傳遞數據過去.不然就提示密碼輸入錯誤

 

最後要講的就是 initNav 方法了 .initNav方法主要就是實現登陸後的頁面跳轉..之前剛學的時候在這裏糾結了很久 好了直接上代碼吧.

 

這邊咱們首先要新建兩個 UIViewController 分別命名爲A和B 吧

-(void)initSmallP:(NSString *)pid
{
    AViewController *aViewController =[[AViewController alloc]initWithNibName:@"AViewController" bundle:nil];
    BViewController *bViewController = [[BViewController alloc]initWithNibName:@"BViewController" bundle:nil] ;
    UINavigationController *aNavController=[[UINavigationController alloc]initWithRootViewController:aViewController];
  UINavigationController
*bNavController=[[UINavigationController alloc] initWithRootViewController:bViewController];
  UITabBarController
*tabController=[[UITabBarController alloc] init];
   [tabController setViewControllers:[NSMutableArray arrayWithObjects:aNavController,bNavController,nil]];
  AppDelegate
* app = (AppDelegate*)[[UIApplication sharedApplication] delegate] ;
   [app.window setRootViewController:tabController];
}

 

而後就完成了 

代碼的意思呢.就是咱們首先 實例化兩個  視圖,而後 建立兩個導航控制器.

最後添加到 一個tabbarcontroller裏面

最後將程序的 rootviewcontroller 設置成tabbarcontroller 就完成了就完成了.

由於手頭沒有資源.因此就把之前作好的登錄後的效果圖貼在下面了

不過咱們接下來也要實現如下的效果  

接下來的內容主要是圍繞着UITableView 來說解的  

你們若是熟練的掌握了 UITABLEVIEW的話 基本上就能完成一個簡單的基本項目了

 

PS:一樣的再次聲明,本文爲本人隨意所寫(看着確定感受怪怪的亂七八糟的..很是很差意思對不起觀衆了.)

另外若是有錯請莫怪樓主誤人子弟..也請及時指出,好讓本人修改..

相關文章
相關標籤/搜索