試用Storyboard

之前大多數時間還是用xib居多,然後apple推出了一個Storyboard,不過我一直沒有來得及試用一下,最近公司一切進展的還不錯,我也終於有屬於自己的一點兒小時間了,然後今天就來大概試用一下Storyboard。

首先我們新建一個項目,選擇SingleView就好。

然後填寫必要信息,完成創建工作。

然後我們來看下創建完的項目的大概的目錄。


可以看到,除了我們之前特別熟悉的AppDelegate和ViewController類,還有一個Main.storyboard,這個Main.storyboard就是我們今天要使用的,我們點擊左側導航欄中的Main.storyboard,然後會看到如下的視圖:


Storyboard編輯器看起來跟IB很相似,我們可以直接從Object Library中拖一個控件扔到View Controller中來進行佈局設計,不過Storyboard和xib不同的地方在於,Storyboard不是僅僅包含一個控制器,而是我們應用裏所有的控制器。這裏我們就不展示如何拖控件了,因爲以前寫過很多拖控件的教程了。

左側主要列出的是nib文件中的組件,但是在Storyboard編輯器中,這裏顯示的是所有的視圖控制器中的內容。現在我們的Storyboard中僅僅有一個視圖控制器,接下來我們會添加更多的控制器。


在Scene的下方,是一個Dock,Dock中顯示的是Scene中最頂級的組件。每個Scene至少有一個First Responder和一個View Controller對象,但是Scene還可以擁有其他的頂級組件。Dock可以很方便的建立連接,直接將需要連接的東西的圖標拽到Dock上即可。

接下來我們看一下delegate.h文件裏的內容:

//
//  ETAppDelegate.h
//  Eric-Storyboard
//
//  Created by EricTang on 14-4-16.
//  Copyright (c) 2014年 Tang. All rights reserved.
//

#import <UIKit/UIKit.h>
@interface ETAppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@end
需要注意的是,如果我們要試用Storyboard,那麼我們的應用代理對象,就必須繼承UIResponder,而非像以前一樣繼承NSObject。然後我們再看一下delegate.m文件中的代碼,發現它在代碼裏沒有做任何事情,所有的方法都是空的。那麼,我們的應用程序是如何知道我們要展示的視圖是哪個呢?答案就在Info.plist裏。

點擊Supporting Files文件夾下的:Info.plist文件,會看到如下的內容:


看到這裏大家應該都明白,就是這個Main Storyboard file base name,會告訴UIApplication去加載Main.storyboard文件,並且自動實例化其中的第一個視圖控制器,同時把它所有的視圖放到新的UIWindow對象中,不需要寫一行代碼。

這裏插一句,有些工程師會說,我要走Geek範兒,我就要用代碼實現各種界面佈局神馬,那也無可厚非,每個人有每個人的風格和習慣,就跟VIM和Emacs之爭,沒必要挑起聖戰,能實現想要的效果和功能即可。

接下來我們試試如何添加多個界面,切換到Main.storyboard,從Object Library中拖動一個Tab Bar Controller到設計器中,然後我們分別拖拽一個Label到兩個視圖控制器中,並且分別把文本設置爲“第一個Tab”和“第二個Tab”,如下圖所示的效果:


需要注意的是,截圖的狀態是縮小狀態,這時候是無法操作拖動視圖控制器上的各個控件的,也無法添加或者刪除各個控件。

然後我們選中Tab Bar Controller並且找到Attribute Inspector,並且選中內容爲Initial View Controller的複選框


這樣兒之後,在Main.storyboard的編輯面板,我們會發現原來指向普通控制器的那個箭頭,現在指向了Tab Bar Controller了,這樣兒,當我們啓動應用程序的時候,UIApplication會將Tab Bar Controller作爲我們的應用的第一個界面。Storyboard總是會有一個視圖控制器用作初始控制器,作爲Storyboard的入口。我們可以啓動應用,測試一下,兩個Tab之間可以來回切換。

我是直接在真機上跑的,就不截圖展示效果了,接下來我們把其中的一個界面給替換掉,替換爲Table View Controller。

首先我們直接刪掉Tab Bar Controller的第一個Item,然後拖拽一個Table View Controller進來,並且把它嵌入到Navigation Controller裏去,如下圖:


這裏需要注意的是Table View Controller包含有一個Navigation Bar,但它並不是一個真正的UINavigationBar,而是模擬出來的,因爲這個Scene會被顯示到Navigation Controller的框架中。

然後我們把新添加的Scene連接到Tab Bar Controller中,按住Ctrl(確實是mac下的ctrl,需要跟cmd鍵區分開來)然後從Tab Bar Controller拖動到Navigation Controller,會有一條藍色的線顯示,鬆開鼠標之後,會顯示如下的一個彈出框:


選擇Relationship Segue下得view controllers,這樣兒,就將Tab Bar Controller和Navigation Controller連接起來了,也就是如下圖的這樣兒:


這樣兒我們就可以直接運行看下修改後的結果:


誒?不對啊,我想設置Table View Controller爲第一個選項啊,這個好辦,直接將Item拖拽到Item2前面,就可以了。

再次運行一下,看看是不是已經OK了?

時間有限,今天大概就先瞭解到這裏,週末的時候應該時間更加充裕一些,到時候多看一些。

修改一下,完整代碼已經push到github,地址是:https://github.com/jeepxiaozi/Eric-Storyboard

2014年04月18日, Eric.Tang 記


發佈了96 篇原創文章 · 獲贊 14 · 訪問量 75萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章