天天看點

Storyboard 簡述 使用 建立 資料傳送 跳轉

一 、簡述

Storyboard是你可以用來定義使用者界面的一種新的方式,像xib。

與xib不同的是它可以同時管理多個ViewController,而且可以在Storyboard中配置ViewController 之間的跳轉關系。

二、Storyboard使用

如果你是建立新項目,Xcode模版可以提供一個配置好的Storyboard供你使用。對于其它的應用,使用Storyboard的過程如下:

1、配置應用程式Info.plist檔案

添加UIMainStoryboardFile ,值為storyboard的檔案名。

删除原來的NSMainNibFile

2、像以前建立xib檔案一樣建立一個storyboard檔案

3、配置 storyboard中的viewController

三、Storyboard的建立

            你可以用InterfaceBuilder 去為你的應用程式建立一個Stroyboard,一般來說一個應用使用一個 Storyboard就夠了,但是如果你想建立多個也是可以的,隻要你願意。一個 Stroyboard應該至少含有一個ViewController。

            在iPhone中,對于每一個在Storyboard的ViewController都管理着一個scene,每個scene又管理着screen上的東東,但對于iPad來說,多個scene可以同時呈現在一個screen上。你可以從library中拖拽viewController到你的Storyboard上。

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

四、 Scene之間的資料傳遞

            當你從目前 scene中觸發一個segue的時候,系統會自動調用prepareForSegue:sender:這個方法。如果你想從一個界面切換到裡另一個界面的時候傳遞資料,你應該override這個方法。

A---》B

想把資料  NSString A_data   從AController傳到BController,則在BController中 

@property 一個NSString data

然後在AController中添加方法

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSLog(@"The segue id is %@", segue.identifier );
    UIViewController *destination = segue.destinationViewController;  
    if ([destination respondsToSelector:@selector(setData:)])
    {
        [destination setValue:@"這是要傳遞的資料" forKey:@"data"];
    }   
}
           

之後,Bcontroller中的data屬性,就接收到資料了。

五、ViewController之間的跳轉

            1、如果在 Storyboard中目前的 ViewController和要跳轉的ViewController之間的segue存在,則可以執行performSegueWithIdentifier:sender:這個方法實作跳轉。

            2、如果目标ViewController存在Storyboard中,但是沒有segue。你可以通過UIStoryboard的instantiateViewControllerWithIdentifier:這個方法擷取到它,然後再用你想要的方式實作跳轉,如:壓棧。

            3、如果目标ViewController不存在,那就去建立它吧。