现在的位置: 首页 > 综合 > 正文

试用Storyboard

2018年01月29日 ⁄ 综合 ⁄ 共 2639字 ⁄ 字号 评论关闭

之前大多数时间还是用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 记

抱歉!评论已关闭.