2-1 实现一个导航控制器
在这个例子中,我们将创建一个展示公司基本信息的简单工程。它使用导航条来显示当前页面的题目。
在Xcode中,除了“空项目”模板,其他的模板都可以使用storyboard。在这个例子中,我们使用“Single View Application”模板。将项目命名为“Recipe 2-1to 2-2:About Us”,如下图所示。
当你创建成功后,你将会看到如下的项目结构:包含“Main.storyboard”文件,单击它就可以开始创建你的storyboard了。
你将要做的第一件事就是在主视图中嵌入一个导航控制器。选中主视图,然后Editor->Embed In->Navigation Controller,这样就可以创建一个导航控制器来和你的storyboard连接起来。如下图所示:
最后,创建主界面的UI。添加一个Label,一个text view,两个buttons如下图所示。为了节省空间,视图控制器可以叠加在导航控制器上。
注意:通常我们从Object library中拖出一个导航控制器会默认地带一个表格控制器。这是一个默认的配置。因为我们还没接触到表格控制器,所以在这个例子中,我们的导航控制器是和一个普通视图关联的。
当你在3.5’’上运行这个程序,下面的两个button会被“砍掉”。为了解决这个问题,你可以这样做:首先选上这两个button,在编辑器的右下角,按下如下图所示的按钮,然后选择“reset to suggested constraints”。这是一个自动布局的特性,我们将在第三章详细讨论。
在storyboard上添加一个新场景
接下来,向storyboard添加一个新场景:当我们点击“Contact Us”按钮时展示公司联系的信息。从object library中拖出一个新的视图控制器放在storyboard上。向下图所示的配置新的视图控制器。
为了将新的视图控制器和“Contact Us”按钮关联起来,首先选中“Contact Us”按钮,同时按住Control,将鼠标拖向新的控制器,此时你就可以创建一个segue.
当你松开鼠标时,会弹出下面这个窗口问你想要那种传递方式。你可以选择push, modal, custom三种方式。因为你正在使用导航控制器,所以应该选择“push”,这样导航条的返回按钮就可以自动设置(为上一页的标题)。做完这个连接之后,你会发现你的导航条已经自动添加到了新的视图上。
想要导航条显示当前页面的标题,其中有一种方式是选择“Navigation Item”,还有一个方式就是点击导航条,再在“属性查看器”中找到“Title”属性,设置我们的主界面控制的标题为“About Us”。然后选择含有公司联系信息的视图,设置其导航项的标题为:“Contact Info”
你还要设置之前创建的segue的identifier属性:选中该segue,在“属性查看器”中设置identifier为“ContactInfoPush”,如下图所示。
给每个segue设置一个identifier是一个很好的习惯,特别是当某一个视图有若干个segues的时候,你就可以检查identifier的值从而做出判断。通常,我们使用“prepareForSegue”方法来处理。
如果你现在运行该app,“Contact Us”按钮将会起作用:当点击它的时候就会跳转到“Contact Info”视图。注意,这个功能的实现一行代码都没有用。