选项卡栏控制器(UITabBarController)-用户触摸不同的选项卡,应用程序在不同的场景间切换,每一个场景都呈现了App的一项功能。
选项卡栏控制器(UITabBarController)管理的场景必须包含一个选项卡栏项(UITabBarItem),它包含标题、图像和徽章(包含数字的红圈)。App运行图中有展示。
范例App运行界面如下图所示:
如下修改选项卡栏按钮属性?
要修改选项卡栏按钮,必须在相应的场景中进行,而不能在选项卡栏控制器场景中进行修改。选择场景视图中的选项卡栏项(UITabBarItem),然后在Attributes Inspector窗口,维护相应的属性。
可以自定义图像和标题,如上图的Bar Item部分的设置。文本框Title用于设置选项卡栏项的标签,而下拉列表Image可以让项目中的图像资源关联到选项卡栏项。图像不能大于32*32点,iOS 将自动设置其样式,使其变成单色的。
如何在选项卡栏管理的场景之间共享数据?
和前面的iOS 5 编程(7)-应用导航控制器(UINavigationController)一样,在每个场景中通过parentViewController 获取选项卡栏控制器(UITabBarController)对象,然后就可以访问该对象的共享属性了。
下面有一段范例代码:
- (void)updateCounts{
NSString *countString;
countString = [[NSString alloc] initWithFormat:
@”场景1:%d\n场景2:%d\n场景3:%d”,
((DemoTabBarController *)self.parentViewController).firstCount,
((DemoTabBarController *)self.parentViewController).secondCount,
((DemoTabBarController *)self.parentViewController).thirdCount];
self.countLabel.text = countString;
}
如何创建选项卡栏和场景之间的连接?
按住Control 键,从文档大纲中的Tab Bar Controller 拖曳到场景中,在Xcode 要求指定切换类型时,选择 Relationship – viewControllers。
选项卡栏和工具栏的区别?
选项卡栏用于在App的不同功能区域切换,而工具栏用于在同一个功能区域指向不同的功能。
范例App中的部分代码:
下面这段代码负责更新显示的计数器值,读取徽章(包含数字的红圈),转换为整数,在加1,然后再转换为字符串,这是因为badgeValue 是一个NSString,而不是整数。
- (void)updateBadge{
NSString *badgeCount;
int currentBadge;
currentBadge = [self.barItem.badgeValue intValue];
currentBadge++;
badgeCount = [[NSString alloc] initWithFormat:@”%d”, currentBadge];
self.barItem.badgeValue = badgeCount;
}