前面的兩篇博客都是學習有關屏幕適配也就是相對布局的東西,這篇博客中將會學習視圖間的切換。視圖間的切換我們可以用代碼完成或者用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;
至此我們的主要代碼就編寫完成,接下來看一下運行效果吧:
先簡單的說這些吧,以后學到了新的內容在更新博客內容,歡迎批評指正。