Storyboard裏面的幾種Segue區別及視圖的切換:push,modal,popover,replace和custom

1、視圖切換類型介紹
在storyboard中,segue有幾種不一樣的類型,在iphone和ipad的開發中,segue的類型是不一樣的。
在iphone中,segue有:push,modal,和custom三種不一樣的類型,這些類型的區別在與新頁面出現的方式。
而在ipad中,有push,modal,popover,replace和custom五種不一樣的類型。

modal 模態轉換

 
最經常使用的場景,新的場景徹底蓋住了舊的那個。用戶沒法再與上一個場景交互,除非他們先關閉這個場景。
是在viewController中的標準切換的方式,包括淡出什麼的,能夠選切換動畫。
Modalview:就是會彈出一個view,你只能在該view上操做,而不能切換到其餘view,除非你關閉了modalview.
Modal View對應的segue type就是modal segue。
*Modal:Transition to another scene for the purposes of completing a task.當user在彈出的modalview裏操做完後,就應該dismiss the modal view scene而後切換回the originalview.

push


Push類型通常是須要頭一個界面是個Navigation Controller的。
是在navigation View Controller中下一級時使用的那種從右側劃入的方式
*Push:Create a chain of scenes where the user can move forward or back.該segue type是和navigation viewcontrollers一塊兒使用。

popover(iPad only)

 
popover 類型,就是採用浮動窗的形式把新頁面展現出來
*Popover(iPad only):Displays the scene in a pop-up 「window」 over top of the current view.
 
 

*Replace (iPad only):

 
替換當前scene,
Replace the current scene with another. This is used in some specialized iPad viewcontrollers (e.g. split-view controller).

custom


就是自定義跳轉方式啦。
*Custom:Used for programming a customtransition between scenes.
在Storyboard中使用自定義的segue類型
參考資料:
使用StoryBoard:用Segue傳遞數據
http://www.cnblogs.com/mybkn/archive/2012/03/22/2411842.html 
WWDC2011視頻之Introduction to Storyboarding摘要
http://blog.sina.com.cn/s/blog_834f346f0100s4jr.html
storyboard 遇到一個segue的問題
http://www.cocoachina.com/bbs/simple/?t92552.html
 
2、StoryBoard的視圖切換

一 、簡述html

Storyboard是你能夠用來定義用戶界面的一種新的方式,像xib。xcode

與xib不一樣的是它能夠同時管理多個ViewController,並且能夠在Storyboard中配置ViewController 之間的跳轉關係。app

 

2、Storyboard使用iphone

若是你是建立新項目,Xcode模版能夠提供一個配置好的Storyboard供你使用。對於其它的應用,使用Storyboard的過程以下:ide

一、配置應用程序Info.plist文件動畫

  • 添加UIMainStoryboardFile ,值爲storyboard的文件名。
  • 刪除原來的NSMainNibFile

二、像之前建立xib文件同樣建立一個storyboard文件ui

三、配置 storyboard中的viewControllerspa

 

3、Storyboard的建立.net

            你能夠用InterfaceBuilder 去爲你的應用程序建立一個Stroyboard,通常來講一個應用使用一個 Storyboard就夠了,可是若是你想建立多個也是能夠的,只要你願意。一個 Stroyboard應該至少含有一個ViewController。code

            在iPhone中,對於每個在Storyboard的ViewController都管理着一個scene,每一個scene又管理着screen上的東東,但對於iPad來講,多個scene能夠同時呈如今一個screen上。你能夠從library中拖拽viewController到你的Storyboard上。

            當你想關聯兩個viewController時,你能夠按着control鍵,用鼠標從一個ViewController中的button,table view cell…拖拽鏈接到另外一個你想跳轉到的ViewController,這樣就建立了一個segue,不要忘記設置identifier哦。

           

4、 Scene之間的數據傳遞

            當你從當前 scene中觸發一個segue的時候,系統會自動調用prepareForSegue:sender:這個方法。若是你想從一個界面切換到裏另外一個界面的時候傳遞數據,你應該override這個方法。

 

A---》B

想把數據  NSString A_data   從AController傳到BController,則在BController中  

@property 一個NSString data

而後在AController中添加方法

 

[objc]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender  
  2. {  
  3.     NSLog(@"The segue id is %@", segue.identifier );  
  4.     UIViewController *destination = segue.destinationViewController;     
  5.     if ([destination respondsToSelector:@selector(setData:)])   
  6.     {  
  7.         [destination setValue:@"這是要傳遞的數據" forKey:@"data"];  
  8.     }      
  9. }  

 

以後,Bcontroller中的data屬性,就接收到數據了。

 

5、ViewController之間的跳轉

            一、若是在 Storyboard中當前的 ViewController和要跳轉的ViewController之間的segue存在,則能夠執行performSegueWithIdentifier:sender:這個方法實現跳轉。

            二、若是目標ViewController存在Storyboard中,可是沒有segue。你能夠經過UIStoryboard的instantiateViewControllerWithIdentifier:這個方法獲取到它,而後再用你想要的方式實現跳轉,如:壓棧。

            三、若是目標ViewController不存在,那就去建立它吧。

相關文章
相關標籤/搜索