注:

貌似CSDN的显示效果不佳,假设有须要的话我能够上传pdf格式的;

另外假设文章中有错误还请给位多多提意见,谢谢。

pdf格式文档:http://download.csdn.net/detail/vesper305/7808837;

主要内容

  • 标签栏多视图和导航栏多视图的差别
  • 用Storyboard构建标签栏多视图应用程序

简述

标签栏应用程序是一种多视图应用程序,它在屏幕底端显示一行button,称为标签栏(tab bar)。单机某个button就会激活一个新的视图控制器(标签页),并显示一个新视图,同一时候底部任然保留着标签栏。

例如以下图所看到的的3个标签栏。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdmVzcGVyMzA1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="font-family:Arial,Helvetica,sans-serif; font-size:12px">

还有一种常见的多视图iPhone应用程序是基于导航的应用程序,这类应用程序拥有一个导航控制器,使用导航栏控制一系列分层的视图。导航控制器跟踪所在的视图深度,并且向你提供控制权。让你能够回到之前的视图。而标签栏用于从两个或很多其它选项中选择一个选项,并且仅仅能选择一个(标签栏多是用于并列平行的页面间的选择)。

參考:该简述主要參考《精通iOS开发》第六章:多视图应用程序

Storyboard构建标签栏

这里我们讲述一下用Storyboard构建标签栏多视图应用程序UI的方法。

1选择Tab Bar Controller

首先在Storyboard的对象选择中选择一个Tab Bar Controller:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdmVzcGVyMzA1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="font-family:Arial,Helvetica,sans-serif; font-size:12px">

在Storyboard中我们能够看到例如以下图所看到的的UI界面。第一个页面(Tab
Bar Controller)我们不须要对它进行操作。由于我们对它的标签页(后面两个页面)的操作会自己主动更新到Tab Bar Controller上面。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdmVzcGVyMzA1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="font-family:Arial,Helvetica,sans-serif; font-size:12px">

2加入我们自己的TableView Controller

从上图能够看到Tab Bar Controller拖入Storyboard中的时候就自带了两个标签页。其类型为View
Controller,我们能够将其删除然后依照我们的须要加入我们自己的视图控制器。

首先我们删除第一个自带的View Controller。然后从右边拖入一个TableView Controller;

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdmVzcGVyMzA1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="font-family:Arial,Helvetica,sans-serif; font-size:12px">

如上图所看到的。加入自己的TableView Controller之后。从Tab Bar Controller到TableViewController建立跳转(按住Control,从Tab
Bar Controller向TableViewController拖线),从上图我们我们能够看到除了寻常的push、modal、custom三种方式之外,多出了一个View
Controllers,这里我们应该选择这样的连接;

3改动标签栏中的标签样式

选中我们刚才加入的TableViewController中的标签图标(Tab Bar Item)。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdmVzcGVyMzA1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="font-family:Arial,Helvetica,sans-serif; font-size:12px">

在属性检查器中查看属性:

这里我们能够改动上面标出的两个项。第一个是标签图标以下显示的文字,第二个是图标ICON。以下是我们改动后的效果:

这时。我们查看Tab Bar Controller中的标签栏已经自己主动更新(这就是我们前面提到的不须要改动Tab BarController):

相同,我们能够删掉其自带的还有一个ViewController然后加入我们须要的TableViewController,然后反复我们刚才的操作:

4加入一个新的Controller

在前面我们拖入的Tab BarController仅仅有两个View Controller,同一时候标签栏中也仅仅有两个标签图标。这里我们加入一个新的视图控制器TableViewController

这里我们能够看到,在未连接新加入的TableView Controller课Tab Bar Controller的时候,标签栏仅仅有两个标签,同一时候新加入的TableView
Controller中也没有标签栏。然后我们依照刚才的方法连接Tab Bar Controller,操作全然一致。

能够看到当连接Tab Bar Controller和TableView Controller之后Tab
Bar Controller中的标签栏标签数自己主动变成了3个。相同我们能够改动新加入的TableViewController中的标签样式。

到此时一个有3个TableView标签页的标签栏多页面UI就做好了,后面的工作就是加入Controller和Model了。这里我们不做介绍。

5执行

为了看出标签页的切换,我们再每一个页面中加入了Label。表面页面的切换:

6參考

具体的做法也能够參考这个视频,讲的比較具体:

http://teamtreehouse.com/library/build-a-selfdestructing-message-iphone-app-2/designing-and-starting-the-app/a-storyboard-with-a-tab-bar-controller

备注

这里的标签栏多页面应用程序仅仅是一个单独的标签栏显示。详细怎样进入标签栏页。用什么方式进入,各有什么差别,我们尚未提及,后面《Tab Bar Controller与导航栏》一文中会详述。

该Demo源码能够再这里下载:http://download.csdn.net/detail/vesper305/7808097。

Guo Liu

于8/24/2014星期日第三次编辑

用Storyboard构建标签栏多页面应用程序UI的更多相关文章

  1. 面向 Java 开发人员的 Ajax: 构建动态的 Java 应用程序

    面向 Java 开发人员的 Ajax: 构建动态的 Java 应用程序 Ajax 为更好的 Web 应用程序铺平了道路 在 Web 应用程序开发中,页面重载循环是最大的一个使用障碍,对于 Java™ ...

  2. 通过Web Api 和 Angular.js 构建单页面的web 程序

    通过Web Api 和 Angular.js 构建单页面的web 程序 在传统的web 应用程序中,浏览器端通过向服务器端发送请求,然后服务器端根据这个请求发送HTML到浏览器,这个响应将会影响整个的 ...

  3. Building Modern Web Apps-构建现代的 Web 应用程序

    Building Modern Web Apps-构建现代的 Web 应用程序 视频长度:1 小时左右 视频作者:Scott Hunter 和 Scott Hanselman 视频背景:Visual ...

  4. 通过Blazor使用C#开发SPA单页面应用程序(1)

    2019年9月23——25日 .NET Core 3.0即将在.NET Conf上发布! .NET Core的发布及成熟重燃了.net程序员的热情和希望,一些.net大咖也在积极的为推动.NET Co ...

  5. Spring WebFlux 教程:如何构建反应式 Web 应用程序

    Spring WebFlux 教程:如何构建反应式 Web 应用程序 反应式系统提供了我们在高数据流世界中所需的无与伦比的响应能力和可扩展性.然而,反应式系统需要经过专门培训的工具和开发人员来实现这些 ...

  6. Ember.js实现单页面应用程序

    1.1.1 摘要 单页应用程序 (SPA) 是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序. SPA使用AJAX和HTML5创建流畅且响应迅速的Web应用程序,不会经常 ...

  7. angular-单页面应用程序

    我们都知道angularjs是单一页面应用程序,那什么是单一页面应用程序呢?单一页面应用程序到底有什么好处呢? 下面我们来看一下: 首先我觉得可以把页面的响应模式分成这样大概3个阶段: 1. 最传统的 ...

  8. SPA 单页面应用程序。

    看到这个问题,先说下自己的理解到的程度,再去参考做修正,争取这一次弄懂搞清楚 自己的理解: 单页面应用程序,解决浏览器获取数据刷新页面的尴尬,通过ajax请求获取数据达到异步更新视图的按钮,原理的实现 ...

  9. 如何使用TDD和React Testing Library构建健壮的React应用程序

    如何使用TDD和React Testing Library构建健壮的React应用程序 当我开始学习React时,我努力的一件事就是以一种既有用又直观的方式来测试我的web应用程序. 每次我想测试它时 ...

随机推荐

  1. openstack中region、az、host aggregate、cell 概念

    1. region 更像是一个地理上的概念,每个region有自己独立的endpoint,regions之间完全隔离,但是多个regions之间共享同一个keystone和dashboard.(注:目 ...

  2. [bzoj2427][HAOI2010]软件安装——强连通分量+树形DP

    题目大意 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一些软件安装到一台磁盘容量为M计算机上,使得这些软件的价值尽可能大(即Vi的和最大). 但是 ...

  3. shell脚本复制文件夹内容到另外的文件夹,如果存在则自动备份

    有时我们需要将一个文件夹覆盖到我们的工作目录,但需要自动备份已经存在的文件,一个一个去备份太麻烦了,全部备份又没有必要.shell脚本可以很好滴完成这个任务.原文链接http://back.zhizh ...

  4. IEEE 802.15介绍

    1. 无线通信 无线通信主要是利用无线电(Radio)射频(RF)技术的通信方式,无线网络是采用无线通信技术实现的网络无线网络可为两种: 近距离无线网络和远距离无线网络 近距离无线网络主要可分为如下两 ...

  5. RabbitMQ消息队列(二): 工作队列

    1. 工作队列: 对于资源密集型任务,我们等待其处理完成在很多情况下是不现实的,比如无法在http的短暂请求窗口中处理大量耗时任务, 为了达到主线程无需等待,任务异步执行的要求,我们可以将任务加入任务 ...

  6. 使用Redirector插件解决googleapis公共库加载的问题

    最近访问一些面向国外的网站总是会出现ajax.googleaips.com无法加载的情况.以下为加载stackoverflow时的情境: 图1 -无法加载的google公共库 问题的原因是谷歌没有在国 ...

  7. CentOS下使用Iptraf进行网络流量的分析笔记

    CentOS下使用Iptraf进行网络流量的分析笔记 一.概述 Iptraf是一款linux环境下,监控网络流量的一款绝佳的免费小软件. 本博客其他随笔参考: Centos安装流量监控工具iftop笔 ...

  8. [ 手记 ] 关于tomcat开机启动设置问题

    今天尝试将tomcat设置为开机启动,大家都知道只需要将启动脚本添加到/etc/rc.local下面开机就会自动执行. /usr/local/tomcat8./bin/startup.sh >& ...

  9. redis SCAN cursor

    https://redis.io/commands/scan 可以看到: sscan的返回结果,有两部分, 第一部分  是一个数字.其实代表一个游标. 第二部分  是结果. scan是以游标为基础,每 ...

  10. AC日记——LOOPS hdu 3853

    3853 思路: 概率dp求期望: 代码: #include <cstdio> #include <cstring> #include <iostream> usi ...