ios - 默认选项卡未将第一个选项卡显示为选中状态
问题描述
我为我的应用程序使用了自定义 UITabbar 因为我的应用程序需要一个视图控制器而不是 uitabbarcontroller。在那,我通过添加和删除第二个视图控制器作为子视图来显示两个视图控制器。直到这很好,但标签栏项目没有显示第一个标签栏项目处于突出显示状态,而是在选择第二个标签栏项目后(从此标签栏项目显示突出显示。)突出显示如下。
所以我尝试了一个解决方案:我添加了一个布尔变量“selected”作为用户定义的运行时属性,这也失败了,即使在选择了第二个标签栏后,第一个标签栏项目仍然突出显示。
我可以知道加载视图时显示默认选项卡突出显示的任何其他替代方法吗?
func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem){
switch item.tag {
case 1:
if sampleTwo == nil {
var storyboard = UIStoryboard(name: "Main", bundle: nil)
sampleTwo = storyboard.instantiateViewController(withIdentifier: "liveeventsVC") as! LiveEventsViewController
}
sampleTwo?.view.removeFromSuperview()
sampleTwo?.removeFromParentViewController()
break
case 2:
if sampleTwo == nil {
var storyboard = UIStoryboard(name: "Main", bundle: nil)
sampleTwo = storyboard.instantiateViewController(withIdentifier: "liveeventsVC") as! LiveEventsViewController
}
self.view.insertSubview(sampleTwo!.view!, belowSubview: self.bidLiveTabbar)
self.addChildViewController(sampleTwo!)
break
default:
break
}
}
如何在自定义标签栏中加载屏幕时显示默认选项卡?
解决方案
IBOutlet weak var tabBar:UITabBar!//and connect this property to the UITabBar in Interface Builder
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
if let items = tabBar!.items {
for item in items {
if item.title == "My Tab Title" {
tabBar.selectedItem = item;
}
}
}
}
如果所有选项卡都有唯一的标题(通常是这种情况),则此方法有效。
推荐阅读
- python - 如何在python中调整直方图的字体大小
- cmake - 使用 ifort 的 CMake 项目失败。“无法编译简单的测试程序。”
- plugins - How to install chaos physics
- ios - 我可以从现有应用程序创建新的 iOS 应用程序吗?
- c++ - 为什么我们可以在编译时使用派生类指针本身来操作派生类成员?
- assembly - gdb 中 pc 的含义(别名?)
- c++ - 如何通过向量处理元组?
- python - 使用 Raspberry Pi 3 的 Full Weather Station 使用 Python 编写的难题
- python - 如何迭代两个数据帧以比较数据并进行处理?
- javascript - 从 React 中的数组中删除具有唯一 ID 的项目