前面的兩篇博客都是學習有關屏幕適配也就是相對佈局的東西,這篇博客中將會學習視圖間的切換。視圖間的切換咱們能夠用代碼完成或者用storyboard來創建各個視圖控制器間的關係。在須要用到代碼進行切換時會用代碼進行視圖間的跳轉。下面的東西咱們會主要介紹到NavigationController來進行視圖間的切換。下面也是和以前同樣把代碼和storyboard結合起來學習。佈局
下面介紹一下咱們要實現的功能和效果: App打開的第一個界面是登錄頁面,登錄頁面由用戶名和密碼以及一個登錄按鈕構成。當登錄成功時會push到第二個頁面,第二個頁面有三個按鈕,A,B和C, 點擊不一樣的按鈕而後會跳轉到相應的View。學習
1.首先咱們先用咱們的storyboard來拖拽出咱們要用的控件,再添加一個NavigationController,下面圖一是給咱們的主視圖添加NavigatinController, 圖二是最終效果spa
2.由於要由登錄狀態來判斷下面的View是否出現,因此主視圖和帶有A,B,C三個按鈕的視圖之間的切換不能用storyboard實現,咱們要用代碼關聯實現。下面是登錄成功後要跳轉的模塊截圖:code
3.以上拖拽工做到此結束,下面要實現咱們的業務邏輯和關聯視圖之間的關係,爲了關聯視圖時能找到帶有三個按鈕的視圖,咱們須要設置一下該視圖的StoryboardID,入下圖 blog
4.下面來編寫咱們的代碼,上面咱們用到了TextField,咱們須要處理鍵盤的回收事件,因此咱們的ViewController要遵照UITextFiledDelegate協議,實現有關鍵盤的方法事件
(1)遵照UITextFieldDelegate協議ci
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的值,由值的狀況來實現是否進行頁面間的切換。 在頁面切換時咱們得關聯兩個頁面中的關係。string
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須要三部it
1.獲取storyboard: 經過bundle的名獲取bundle, 在經過storyborad的名字來獲取咱們的storyboard;
2.在由storyboard獲取storyboardID是myView的View;
3.執行由當前View推向咱們獲取到的myView;
至此咱們的主要代碼就編寫完成,接下來看一下運行效果吧:
先簡單的說這些吧,之後學到了新的內容在更新博客內容,歡迎批評指正。