天天看點

storyboard的跳轉 傳值 基礎使用詳解

自從更新了Xcode6.0習慣的XIB就不見了,對于習慣畫控件的懶人來說這是緻命的,于是被逼的隻能使用難用?的storyboard.
剛開始接觸storyboard簡直是一團迷霧,簡直是一邊看部落格一邊咒罵某水果為什麼用這麼難用的東西取代XIB.但是随着學習的深入,storyboard的強大之處也慢慢的了解了.但總覺得還是不如XIB用起來順手.可能是思維上依舊無法轉變吧,不過開發的效率确實增快了不少.下面就說下storyboard的使用吧.
## 建立 ##
           

singleView 故事闆,畫界面比說故事還容易? 反正我不會說故事.

storyboard的跳轉 傳值 基礎使用詳解

建立完成後系統直接為我們建立了一些檔案

storyboard的跳轉 傳值 基礎使用詳解

1.入口類,在故事闆模式中 這裡将不再支援設定RootViewController 系統也将跳轉代碼隐藏了

storyboard的跳轉 傳值 基礎使用詳解

2.預設控制器.系統預設控制器,storyboard中的第一個視圖預設與這個類綁定,和普通的viewController一樣

3.storyboard檔案,我們之後隻能在這個檔案中進行視圖的繪制了

storyboard的跳轉 傳值 基礎使用詳解

4.XIB檔案? 不是說沒有了嗎? 這個XIB隻是在程式剛剛啟動,黑屏加載時調用 加載完成後就會自動跳轉到storyboard中的視圖

storyboard的跳轉 傳值 基礎使用詳解

大緻介紹完畢 下面将詳細介紹Storyboard

首先,我們看到storyboard中系統預設給出得視圖并非是iphone的 而是ipad的 怎麼改變呢?

storyboard的跳轉 傳值 基礎使用詳解

選中視圖中的黃色按鈕 表示選中整個ViewController

storyboard的跳轉 傳值 基礎使用詳解

在右側進行設定size 改為

storyboard的跳轉 傳值 基礎使用詳解

OK 這個問題解決. 下面我們建立一個視圖 并且将兩個視圖進行關聯

storyboard的跳轉 傳值 基礎使用詳解

如何進行頁面的跳轉

選中viewController 将其拖到空白區 改變size和預設視圖相同

在兩個視圖上各自添加一個按鈕

storyboard的跳轉 傳值 基礎使用詳解

選中按鈕 右鍵然後移動到要跳轉的視圖上面

storyboard的跳轉 傳值 基礎使用詳解

松手後 在黃色視圖上就會出現一排選項

選擇 show 黃色視圖也進行相同的操作 完成後是這樣的

storyboard的跳轉 傳值 基礎使用詳解

下面是運作效果

storyboard的跳轉 傳值 基礎使用詳解

這樣就實作了兩個頁面的跳轉 是不是很簡單?

如何進行視圖與類的關聯

跳轉雖然實作了 可是第二個視圖的代碼寫在哪裡呢??

建立一個繼承與ViewController的類 不要勾選XIB

storyboard的跳轉 傳值 基礎使用詳解

選中黃色的視圖 在Class選項中輸入剛才建立的類的名稱 按回車儲存

storyboard的跳轉 傳值 基礎使用詳解

這樣就講黃色視圖跟剛才建立的類關聯了起來

在YellowViewController中寫行代碼測試下

- (void)viewDidLoad {
    [super viewDidLoad];
    //設定背景顔色為紅色
    self.view.backgroundColor = [UIColor redColor];
    // Do any additional setup after loading the view, typically from a nib.
}           
storyboard的跳轉 傳值 基礎使用詳解

OK 背景顔色成功改變 說明已經關聯成功了

如何進行參數的傳遞 什麼是segue

切換到Storyboard 選中從藍指向黃色view的線

storyboard的跳轉 傳值 基礎使用詳解

這條線 就是segue了 不要以為它隻是一個指向辨別符,如果想要傳遞參數 還要對它進行設定 檢視左邊的設定選項 将identifier随便寫一個辨別符 每個segue的辨別符盡量不要重複

storyboard的跳轉 傳值 基礎使用詳解

接下來 我們讓藍色視圖傳遞給黃色視圖一個參數

在黃色視圖内添加一個textfield 并且關聯到yellowViewController

再建立一個NSString類型的屬性

storyboard的跳轉 傳值 基礎使用詳解

切換到ViewController中 在.M檔案中寫入一個方法

//系統方法 跳轉時調用
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    //判斷segue的identifier是否是我們剛才設定的 如果不是 則不進行參數傳遞 依舊會跳轉
    if ([segue.identifier isEqualToString:@"goto"]) {
        //擷取要跳轉的viewController
        UIViewController * view = segue.destinationViewController;
        //對跳轉目标的str屬性進行設定值
        [view setValue:@"我是被傳遞過去的字元串君" forKey:@"str"];
    }
}           

在yellowViewController中讓textfield接受傳遞過來的字元串

- (void)viewDidLoad {
    [super viewDidLoad];
    _textView.text = _str;
}           

好了 設定完成 看看效果如何

storyboard的跳轉 傳值 基礎使用詳解

跳轉成功

參數也被順利的傳遞了過來

回傳參數和這個是一樣的 都是通過系統的-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender方法傳遞的

唯一的差別是系統傳回的時候不會在執行viewDidload方法了 想要接受參數可以使用

//這個方法在系統将要顯示時調用
-(void)viewWillAppear:(BOOL)animated{
    //在這裡接收參數
}           

剩下還有push 和model彈出方式 下次再講