注:

貌似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. Extjs GridPanel 鼠标拖动选中单元格

    本文主要是实现了一个拖动选择单元格并计算的功能

  2. 【Sqlite3】SQLITE3使用总结(转)

    原文转自 https://www.cnblogs.com/wenxp2006/archive/2012/06/04/2535169.html SQL语句操作 介绍如何用sqlite 执行标准 sql  ...

  3. 无线路由器中WMM/Short GI/AP隔离各是什么功能, 开启时PC无法ping通手机.

      无线路由器的WMM功能和开启ap隔离,以及开启ShortGI有什么用 无线路由器中有开启WMM.开启Short GI和开启AP隔离分别代表什么呢?这是我在我的TP-LINK无线路由器TL-WR84 ...

  4. Linux : select()详解 和 实现原理【转】

    转自:http://blog.csdn.net/huntinux/article/details/39289317 原文:http://blog.csdn.net/boboiask/article/d ...

  5. python Nosql-redis 连接、管道

    非关系型数据库和关系型数据库的差别: 非关系型数据库的优势: 性能NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高. 可扩展性同样也是因为基于 ...

  6. [ Mariadb ] 通过HAProxy代理后端Mariadb实现负载均衡

    一.本次环境架构图 由于公司内网服务器有限,所以后端采用Mariadb自带的mysql_multi模型实现多实例. mysql的多实例有两种方式可以实现,两种方式各有利弊. 1.使用多个配置文件启动不 ...

  7. MMSEG 中文分词算法 翻译

    算法原文位于:http://technology.chtsai.org/mmseg/ http://www.360doc.com/content/13/0217/15/11619026_2661428 ...

  8. 【转.解析清晰】你真明白 Python 装饰器么?

      原文出处: 武沛齐    装饰器是程序开发中经常会用到的一个功能,用好了装饰器,开发效率如虎添翼,所以这也是Python面试中必问的问题,但对于好多小白来讲,这个功能 有点绕,自学时直接绕过去了, ...

  9. UVA 12594 Naming Babies

    $dp$,斜率优化. 设$dp[j][i]$表示前$i$个位置分成$j$段的最小值,递推式很好写,预处理几个前缀和就可以了,然后斜率优化即可. #pragma comment(linker, &quo ...

  10. 差分数组 and 树上差分

    差分数组 定义 百度百科中的差分定义 //其实这完全和要讲的没关系 qwq 进去看了之后是不是觉得看不懂? 那我简单概括一下qwq 差分数组de定义:记录当前位置的数与上一位置的数的差值. 栗子 容易 ...