用Storyboard构建标签栏多页面应用程序UI
注:
貌似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參考
具体的做法也能够參考这个视频,讲的比較具体:
备注
这里的标签栏多页面应用程序仅仅是一个单独的标签栏显示。详细怎样进入标签栏页。用什么方式进入,各有什么差别,我们尚未提及,后面《Tab Bar Controller与导航栏》一文中会详述。
该Demo源码能够再这里下载:http://download.csdn.net/detail/vesper305/7808097。
Guo Liu
于8/24/2014星期日第三次编辑
用Storyboard构建标签栏多页面应用程序UI的更多相关文章
- 面向 Java 开发人员的 Ajax: 构建动态的 Java 应用程序
面向 Java 开发人员的 Ajax: 构建动态的 Java 应用程序 Ajax 为更好的 Web 应用程序铺平了道路 在 Web 应用程序开发中,页面重载循环是最大的一个使用障碍,对于 Java™ ...
- 通过Web Api 和 Angular.js 构建单页面的web 程序
通过Web Api 和 Angular.js 构建单页面的web 程序 在传统的web 应用程序中,浏览器端通过向服务器端发送请求,然后服务器端根据这个请求发送HTML到浏览器,这个响应将会影响整个的 ...
- Building Modern Web Apps-构建现代的 Web 应用程序
Building Modern Web Apps-构建现代的 Web 应用程序 视频长度:1 小时左右 视频作者:Scott Hunter 和 Scott Hanselman 视频背景:Visual ...
- 通过Blazor使用C#开发SPA单页面应用程序(1)
2019年9月23——25日 .NET Core 3.0即将在.NET Conf上发布! .NET Core的发布及成熟重燃了.net程序员的热情和希望,一些.net大咖也在积极的为推动.NET Co ...
- Spring WebFlux 教程:如何构建反应式 Web 应用程序
Spring WebFlux 教程:如何构建反应式 Web 应用程序 反应式系统提供了我们在高数据流世界中所需的无与伦比的响应能力和可扩展性.然而,反应式系统需要经过专门培训的工具和开发人员来实现这些 ...
- Ember.js实现单页面应用程序
1.1.1 摘要 单页应用程序 (SPA) 是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序. SPA使用AJAX和HTML5创建流畅且响应迅速的Web应用程序,不会经常 ...
- angular-单页面应用程序
我们都知道angularjs是单一页面应用程序,那什么是单一页面应用程序呢?单一页面应用程序到底有什么好处呢? 下面我们来看一下: 首先我觉得可以把页面的响应模式分成这样大概3个阶段: 1. 最传统的 ...
- SPA 单页面应用程序。
看到这个问题,先说下自己的理解到的程度,再去参考做修正,争取这一次弄懂搞清楚 自己的理解: 单页面应用程序,解决浏览器获取数据刷新页面的尴尬,通过ajax请求获取数据达到异步更新视图的按钮,原理的实现 ...
- 如何使用TDD和React Testing Library构建健壮的React应用程序
如何使用TDD和React Testing Library构建健壮的React应用程序 当我开始学习React时,我努力的一件事就是以一种既有用又直观的方式来测试我的web应用程序. 每次我想测试它时 ...
随机推荐
- [ CodeVS冲杯之路 ] P2492
不充钱,你怎么AC? 题目:http://codevs.cn/problem/2492/ 在此先orz小胖子,教我怎么路径压缩链表,那么这样就可以在任意节点跳进链表啦(手动@LCF) 对于查询操作,直 ...
- bzoj 1060 贪心
设根到每个叶子节点的距离为dis,比较容易的看出来,我们需要把这颗树的所有叶子节点的值都变成其中最大的内个,我们设为max,那么对于一颗子树来说,设其中dis值最大的为x,我们需要将这个子树根节点和子 ...
- ajax获取django的csrf_token
''' 方法一: data: { 'teamid': teamid, csrfmiddlewaretoken: '{{ csrf_token }}' //data: {name: 'john', cs ...
- Codeforces 219D Choosing Capital for Treeland 2次DP
//选择一个根使得变换最少边的方向使得能够到达所有点#include <map> #include <set> #include <list> #include & ...
- 最新Python异步编程详解
我们都知道对于I/O相关的程序来说,异步编程可以大幅度的提高系统的吞吐量,因为在某个I/O操作的读写过程中,系统可以先去处理其它的操作(通常是其它的I/O操作),那么Python中是如何实现异步编程的 ...
- iOS开发-Runloop详解(简书)
不知道大家有没有想过这个问题,一个应用开始运行以后放在那里,如果不对它进行任何操作,这个应用就像静止了一样,不会自发的有任何动作发生,但是如果我们点击界面上的一个按钮,这个时候就会有对应的按钮响应事件 ...
- JavaSript中数组方法是否对原数组产生影响
JavaScript中数组方法有很多.某次面试被问到,concat()方法会对影响到原数组吗.当时记得不牢,犹豫地说"会吧...".于是决定总结一下哪些数组方法会对原数组产生影响. ...
- LNMP的基本配置
LNMP的基本配置cd /usr/local/nginx_php/etc/ > php-fpm.conf //清空php-fpm.conf vim ph ...
- pycurl mac 安装报错Curl is configured to use SSL,
1.使用安装第三方插件的方式安装pycurl:pip3 install pycurl 报错提示如下: Curl is configured to use SSL, but we have not be ...
- asp.net数据类型--泛型
asp.net有很多的数据类型,同时c#等均是强数据类型,在使用的过程,存在因数据类型不一致,在编译时通过,在使用过程中出错的情况,因此从2.0起,增加泛型这种类型.这种类型,在定义时不指定类型,而在 ...