
1.segue:可視化編程中連接兩個頁面的線條,稱之為 segue。
2.iPhoneGUI開發(fā)中 segue類型主要有三種,包括 push、modal、custom。
在iPad中,segue有(5種):push、modal、popover、replace、custom類型
3.其中custom需要我們自定義 segue來完成頁面間跳轉。
4.segue 有三個重要屬性:標識符、源控制器、 目標控制器。
- modal類型(模態(tài)轉換):
1. 最常用的場景,新的場景完全蓋住了舊的那個。用戶無法與上一個場景交互,除非他們先關閉這個場景。
2.它是在viewControllers中的標準切換方式,包括淡出什么的,可以切換動畫。
3.ModalView:就是會彈出一個view,你只能在該view上操作,而不能切換到其他的view,除非你關閉了modalView。
4.ModalView對應的segue type就是modal segue。在彈出的modalView里操作完成后,就應該dismiss the modal view scene然后切換后原視圖。
- Push類型:
1.一般需要頭一個界面是Navigation Controller的,它是在navigation View Controller中下一級時使用的那種從右側劃入的方式。
2.該類型是和navigation viewcontrollers一起使用。
- Popover類型:采用浮動窗口的形式把新頁面顯示出來。
- Replace類型:替換當期的scene。
自定義segue步驟:
步驟一 : 新建一個類繼承 UIStoryboardSegue
步驟 二: 選中前 個控制器,按住control鼠標 標輔助完成連線,選 擇custom。
步驟三: 選中 定義 segue,設置 segue的identifier 以及關聯(lián)類。
步驟四: 在 segue類里重寫perform方法(界 間跳轉默認執(zhí)行的方法), 自定義跳轉效果。
代碼部分:在自定義的繼于 UIStoryboardSegue類實現(xiàn)部分
// 跳轉時, 定義segue會自動觸發(fā)此法(重寫的系統(tǒng)方法)
/ / 這是為了跳轉也可以弄成push或者模態(tài)
- (void)perform
{
//獲取源控制器 (記得要引入目標和源視圖控制器)
UIViewController1 *v1 = (UIViewController*)self.sourceViewController;
//獲取目標控制器
UIViewController2 *v2 = (UIViewController*)self.destinationViewController;
// 自定義頁面切換效果
/ / 在動畫過程中,首先將 fromView 從父視圖中刪除,然后將 toView 添加,就是做了一個替換操作。
/ / FromView 需要移除的視圖
// toView 需要顯示的視圖
// duration:動畫持續(xù)時間
/ / options 動畫類型
[UIView transitionFromView:v1.view toView:v2.view duration:10 options:UIViewAnimationOptionTransitionCurlDowncompletion:^(BOOL finished) {
//動畫完成后執(zhí) 的部分
// 動畫只是完成了視圖的切換還要使用push或者模態(tài)將視圖控制器切換}];
[v1.navigationController pushViewController:vc2 animated:1]
}
還可以自定義一個push模式(多此一舉只為了演示這個方法)
- (void)perform{
SourceViewController *vc = (InformationViewController *)self.sourceViewController;
DestinationViewController *vc1 = (TableTableViewController *)self.destinationViewController;
[vc.navigationController pushViewController:vc1 animated:1];
}
頁面跳轉傳值
storyboard界面間跳轉會執(zhí)
// 視圖控制器里面實現(xiàn)
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 方法, 方便界面間數(shù)據(jù)統(tǒng)一管理。
? 依據(jù)不同的segue標識符來完成數(shù)據(jù)處理。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
CustomViewController *customVC = (CustomViewController*)segue.destinationViewController;
// @“push”這個就是Segue ID 自己的identifier區(qū)分好
if ([segue.identifier isEqualToString:@"push"]) {
customVC.tempString = self.textField.text;
}else{ NSLog(@"其他情況處理、、、");
} }