GeekBand_OC实战第二周笔记——StoryBoard及ViewController应用

这两周学习OC界面的编写实战,在xcode中创建的是single app的工程。第一周认识了使用storyboard画单个界面,添加UILabel、UITextField和UIView这些功能组件,并且给他们添加动作行为。相比较而言,第二周更像是在第一周基础之上的真正的实战,理解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界面。创建一个项目时,拖动一个界面到StoryBoard,使得工程会自动包含至少一个UIViewController的子类,如果要实现更特殊的界面,我们会新建新的UIViewController子类。每当新建子类时,我们需要创建它的interface文件(h)和implementation文件(m)。UINavigationBar、UITabBar、UITableView这些class创建之后提供更方便的UIViewController管理方式,而一些Button、Text、Label对象创建之后则可以在对应ViewController的文件中利用属性和实例方法进行调用和实现各种行为。

在作业中,我们练习了UIViewController相关的一些常用方法:

- (void)viewDidLoad               //在界面加载时运行一些自定义的步骤

- (IBAction)unwindToHome    //返回到调用这个方法的界面,IBAction和void类似,IBAction一般表示方法和界面上的某个对象对应。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender   //实现相连接的ViewController之间的传值

Segue

segue英文意为音乐音符之间的连接号。

在UIViewController类的界面中,它们也正是将两个界面相连的连接号对象。这个对象在编译的时候会调用到自身的identifier、source和destination方法,所以我们在StoryBoard创建这根连接线的时候,一定要在attributes inspector中给它指定一个identifier,来让调用它的方法能够通过这个身份来找到它。

segue传值的实现代码一般如下:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

if([segue.identifier isEqualToString:@"toVC1"]){          //判断连接id

SecondViewController *destination = segue.destinationViewController;

                                                                                //目标类:SecondViewController,创建传值实例

destination.userName = self.userNameText.text;     //将userNameText控件的内容传递给目标的userName变量,注意这个变量不能是weak属性的,否则会传递失败。

}

}

也可以用经典的KVC语句代替赋值语句进行传值:

[destination setValue:self.userNameText.text forKey:@"userName"];

常用类

UINavigationBar  //导航栏

UITabBar             //Tab导航栏

UITableView        //表格内容

UICollectionView //可以实现网格内容显示的TableView的扩展版,需要很多自定义的类,适合深入到coding发掘用法。

你可能感兴趣的:(GeekBand_OC实战第二周笔记——StoryBoard及ViewController应用)