iOS开发:TabBar与NavigationController实战指南
立即解锁
发布时间: 2025-08-17 02:01:18 阅读量: 9 订阅数: 21 


iOS 8应用开发24小时速成指南
### iOS开发:Tab Bar与Navigation Controller实战指南
#### 1. Tab Bar Controller简介
Tab Bar Controller(`UITabBarController`)是iOS应用中常用的视图控制器类型,与Navigation Controller类似,它在屏幕底部呈现一系列“标签”,以图标和文本表示。通过点击这些标签,用户可以在不同场景之间切换,每个场景代表应用中的不同功能或查看应用信息的独特方式。例如,iPhone上的电话应用就使用Tab Bar Controller来展示不同的通话和联系人查看方式。
Tab Bar Controller会自动处理场景切换,无需手动编写代码处理标签栏事件或手动切换视图控制器。
#### 2. Tab Bars和Tab Bar Items
在故事板中实现Tab Bar与Navigation Controller非常相似。它包含一个`UITabBar`,外观类似工具栏。由Tab Bar Controller呈现的场景必须包含一个Tab Bar Item(`UITabBarItem`),该Item有标题、图像,还可选择添加徽章(一个带有数字的小红圈)。
徽章的作用在于,当应用的某个标签场景中有长时间运行的计算时,即使用户切换到其他标签,计算仍在继续,场景的视图控制器可以更新该标签的徽章,让用户无需来回切换就能直观看到有新情况。
#### 3. 在故事板中使用Tab Bar Controller
##### 3.1 添加Tab Bar Controller
不建议使用苹果提供的Tabbed Application模板,因为该模板默认关联的视图控制器名称(`FirstViewController`和`SecondViewController`)在实际项目中缺乏实际意义,重命名操作反而更麻烦。
推荐从Single View Application模板开始,若不需要初始场景过渡到Tab Bar Controller,可删除初始场景及其对应的`ViewController.swift`文件。然后从对象库中将Tab Bar Controller对象拖到文档大纲或编辑器中,这会添加一个控制器和两个示例标签栏场景。
Tab Bar Controller场景代表`UITabBarController`对象,负责协调所有场景过渡,其中的Tab Bar对象可通过Interface Builder进行颜色等简单自定义。
##### 3.2 设置Tab Bar Item属性
要编辑某个场景的Tab Bar Item,打开该场景的视图控制器,在文档大纲区域选择Tab Bar Item,然后打开属性检查器(`Option-Command-4`)。可以通过Tab Bar Item部分设置徽章显示的值,通常在代码中通过`badgeValue`变量属性设置。也可使用Identifier弹出菜单选择预定义的标签栏图标和标签,但选择后无法进一步自定义。若要设置自己的图像和标题,可使用Bar Item设置,Title字段设置标签栏Item的标签,Image下拉框关联项目中的图像资源。
Tab Bar图像大小约为30×30点(2倍Retina显示屏为60×60像素,iPhone 6+ 3倍显示屏为90×90像素)或更小,iOS会自动将其样式设置为单色方案,创建标签栏界面艺术时,简单的透明背景线条画效果最佳。
##### 3.3 添加额外的Tab Bar场景
与其他Segue不同,Tab Bar通过明确的Tab Bar Item触发场景变化,这种场景过渡称为控制器与场景之间的关系,而非Segue。创建新场景、Tab Bar Item及它们之间的关系的步骤如下:
1. 向故事板添加一个新的视图控制器。
2. 将新视图控制器实例拖到文档大纲或编辑器中。
3. 从Tab Bar Controller按住Control键拖动到新场景的视图控制器,在提示时选择Relationship Segue, View Controllers。
创建这种关系后,会自动为新场景添加一个Tab Bar Item,可进行配置。可以重复此操作创建任意数量的标签和场景。
添加到Tab Bar Controller的场景与其他场景相同,可使用身份检查器关联视图控制器子类,并以相同方式与场景交互。例如,要设置Tab Bar Item的`badgeValue`,可在视图控制器中创建一个Outlet引用该Tab Bar Item。
#### 4. 在Tab Bar场景之间共享数据
与Navigation Controller一样,Tab Bar Controller也便于共享信息。可创建一个`UITabBarController`子类,并将其指定为Tab Bar Controller的身份。在子类中添加表示要共享数据的变量属性,然后在每个场景中通过`parentViewController`变量属性访问这些变量。
#### 5. 使用Navigation Controller的示例项目
在第一个项目中,我们将创建一个通过Navigation Controller展示三个场景的应用。每个场景中有一个“Next”按钮,点击后计数器加1并过渡到下一个场景。计数器将存储在Navigation Controller的自定义子类的变量属性中,这既展示了基于导航的用户界面构建,也展示了如何使用Navigation Controller管理所有场景都可访问的变量属性。
##### 5.1 项目实现概述
项目从Single View Application模板开始,移除初始场景和视图控制器,添加一个Navigation Controller和两个自定义类:一个是Navigation Controller的子类,用于使应用的每个场景共享信息;另一个是视图控制器的子类,用于处理场景中的用户交互。
移除与Navigation Controller一起使用的默认表视图控制器,添加三个场景,指定其中一个为控制器的根视图场景。每个场景的视图中包含一个“Next”按钮,该按钮有一个动作方法来增加计数器,并从该按钮到下一个场景有一个Segue。
在大多数应用中,每个场景都有自己的视图控制器子类,但在本应用中,每个场景的操作相同,因此可以使用单个视图控制器,节省时间和代码。
##### 5.2 设置项目
创建一个名为`LetsNavigate`的新单视图项目,清理项目,删除`ViewController.swift`文件和初始场景的视图控制器。注意,项目名称应尽量简单,避免使用特殊字符,以免给后续开发带来问题。
##### 5.3 添加Navigation Controller和通用视图控制器类
需要向项目添加两个额外的类:
1. `CountingNavigationController`:`UINavigationController`的子类,管理推新场景的计数变量属性。
2. `GenericViewController`:`UIViewController`的子类,处理推计数的增加并在每个场景中显示计数。
添加这两个类的步骤如下:
1. 点击项目导航器左下角的“+”按钮,选择New File。
2. 选择iOS Source类别和Cocoa Touch类,然后点击Next。
3. 将
0
0
复制全文
相关推荐










