IOS開發之獲取Storyboard創建的ViewController


  前面的兩篇博客都是學習有關屏幕適配也就是相對布局的東西,這篇博客中將會學習視圖間的切換。視圖間的切換我們可以用代碼完成或者用storyboard來建立各個視圖控制器間的關系。在需要用到代碼進行切換時會用代碼進行視圖間的跳轉。下面的東西我們會主要介紹到NavigationController來進行視圖間的切換。下面也是和之前一樣把代碼和storyboard結合起來學習。

  下面介紹一下我們要實現的功能和效果: App打開的第一個界面是登陸頁面,登陸頁面由用戶名和密碼以及一個登陸按鈕構成。當登陸成功時會push到第二個頁面,第二個頁面有三個按鈕,A,B和C, 點擊不同的按鈕然后會跳轉到相應的View。

  1.首先我們先用我們的storyboard來拖拽出我們要用的控件,再添加一個NavigationController,下面圖一是給我們的主視圖添加NavigatinController, 圖二是最終效果

                         

 

  2.因為要由登陸狀態來判斷下面的View是否出現,所以主視圖和帶有A,B,C三個按鈕的視圖之間的切換不能用storyboard實現,我們要用代碼關聯實現。下面是登陸成功后要跳轉的模塊截圖:

                

  3.以上拖拽工作到此結束,下面要實現我們的業務邏輯和關聯視圖之間的關系,為了關聯視圖時能找到帶有三個按鈕的視圖,我們需要設置一下該視圖的StoryboardID,入下圖  

                               

 

  4.下面來編寫我們的代碼,上面我們用到了TextField,我們需要處理鍵盤的回收事件,所以我們的ViewController要遵守UITextFiledDelegate協議,實現有關鍵盤的方法

    (1)遵守UITextFieldDelegate協議

1
2
3
4
#import <UIKit/UIKit.h>
 
@interface ViewController : UIViewController<UITextFieldDelegate>
@end

​    (2)在ViewController.m中中進行回調注冊和實現協議中相應的方法,代碼如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-( BOOL ) textFieldShouldReturn:(UITextField *)textField
{
     [self.userName resignFirstResponder];
     [self.password resignFirstResponder];
     return  YES;
}
 
- ( void )viewDidLoad
{
     [super viewDidLoad];
     // Do any additional setup after loading the view, typically from a nib.
     self.userName.delegate = self;
     self.password.delegate = self;
}

  5.處理完鍵盤的事兒,就該處理我們當登陸按鈕點擊時回調的事件了,首先在回調方法中獲取TextFiled的值,由值的情況來實現是否進行頁面間的切換。 在頁面切換時我們得關聯兩個頁面中的關系。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
- (IBAction)tapButton:(id)sender {
     
     NSString *username = self.userName.text;
     NSString *password = self.password.text;
     
     if  ([username isEqualToString:@ "admin" ] && [password isEqualToString:@ "admin" ])
     {
         //獲取storyboard: 通過bundle根據storyboard的名字來獲取我們的storyboard,
         UIStoryboard *story = [UIStoryboard storyboardWithName:@ "Main"  bundle:[NSBundle mainBundle]];
         
         //由storyboard根據myView的storyBoardID來獲取我們要切換的視圖
         UIViewController *myView = [story instantiateViewControllerWithIdentifier:@ "myView" ];
         
         //由navigationController推向我們要推向的view
         [self.navigationController pushViewController:myView animated:YES];
         
     }
 
}

​      代碼說明:關聯兩個View需要三部

        1.獲取storyboard: 通過bundle的名獲取bundle, 在通過storyborad的名字來獲取我們的storyboard;

        2.在由storyboard獲取storyboardID是myView的View;

        3.執行由當前View推向我們獲取到的myView;

    至此我們的主要代碼就編寫完成,接下來看一下運行效果吧:

                          

 

             

 

  先簡單的說這些吧,以后學到了新的內容在更新博客內容,歡迎批評指正。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM