這兩周學習OC界面的編寫實戰(zhàn)妄呕,在xcode中創(chuàng)建的是single app的工程。第一周認識了使用storyboard畫單個界面嗽测,添加UILabel绪励、UITextField和UIView這些功能組件,并且給他們添加動作行為唠粥。相比較而言疏魏,第二周更像是在第一周基礎之上的真正的實戰(zhàn),理解app概念模型和諸如MVC這樣的重要框架晤愧,理解storyboard和配合它工作的各個類大莫,然后重點放在多個界面的segue連接和這些ViewController界面的組織,以及開始介紹一些更常用的類UINavigationBar官份、UITabBar只厘、UITableView和UICollectionView。
現在的學習還是以使用storyboard所見即所得的模式實現出界面為主舅巷,但是隨著自己編寫類的需求增加羔味,總有一天還是要深入到代碼的。
StoryBoard
UIStoryBoard是一個類钠右,在文檔中我們可以得知它里面裝的是app界面的view controller graph赋元,這些可視的graph可以用來管理app中的一個界面或者一個界面的部分。
如果不深入到StoryBoard的代碼,最常用的編寫app界面的事就是把view controller graph一個一個拖入到StoryBoard中们陆,然后將它們連接上各自的implementation實現寒瓦。
這些對象中情屹,UIViewController是管理界面的基礎結構坪仇,一般我們自定義它的各種子類來組成我們的app界面。創(chuàng)建一個項目時垃你,拖動一個界面到StoryBoard椅文,使得工程會自動包含至少一個UIViewController的子類,如果要實現更特殊的界面惜颇,我們會新建新的UIViewController子類皆刺。每當新建子類時,我們需要創(chuàng)建它的interface文件(h)和implementation文件(m)凌摄。UINavigationBar羡蛾、UITabBar、UITableView這些class創(chuàng)建之后提供更方便的UIViewController管理方式锨亏,而一些Button痴怨、Text、Label對象創(chuàng)建之后則可以在對應ViewController的文件中利用屬性和實例方法進行調用和實現各種行為器予。
在作業(yè)中浪藻,我們練習了UIViewController相關的一些常用方法:
- (void)viewDidLoad ? ? ? ? ? ? ? //在界面加載時運行一些自定義的步驟
- (IBAction)unwindToHome ? ?//返回到調用這個方法的界面,IBAction和void類似乾翔,IBAction一般表示方法和界面上的某個對象對應爱葵。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender ? //實現相連接的ViewController之間的傳值
Segue
segue英文意為音樂音符之間的連接號。
在UIViewController類的界面中反浓,它們也正是將兩個界面相連的連接號對象萌丈。這個對象在編譯的時候會調用到自身的identifier、source和destination方法雷则,所以我們在StoryBoard創(chuàng)建這根連接線的時候浓瞪,一定要在attributes inspector中給它指定一個identifier,來讓調用它的方法能夠通過這個身份來找到它巧婶。
segue傳值的實現代碼一般如下:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if([segue.identifier isEqualToString:@"toVC1"]){ ? ? ? ? ?//判斷連接id
SecondViewController *destination = segue.destinationViewController;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //目標類:SecondViewController,創(chuàng)建傳值實例
destination.userName = self.userNameText.text; ? ? //將userNameText控件的內容傳遞給目標的userName變量乾颁,注意這個變量不能是weak屬性的,否則會傳遞失敗艺栈。
}
}
也可以用經典的KVC語句代替賦值語句進行傳值:
[destination setValue:self.userNameText.text forKey:@"userName"];
常用類
UINavigationBar ?//導航欄
UITabBar ? ? ? ? ? ? //Tab導航欄
UITableView ? ? ? ?//表格內容
UICollectionView //可以實現網格內容顯示的TableView的擴展版英岭,需要很多自定義的類,適合深入到coding發(fā)掘用法湿右。