如何设置TabBar所有TabBarItem初始状态为未选中?
实现TabBar初始无选中Item的方法
当然有办法实现这个需求!针对iOS的UITabBar组件,你可以通过以下几种简单方式让所有TabBarItem在初始状态下都保持未选中状态,打破系统默认选中第一个Item的行为:
方法一:直接设置选中索引为-1或选中项为nil
在你的TabBarController对应的视图控制器生命周期方法里(比如viewDidLoad或者viewWillAppear),直接修改TabBar的选中状态即可,代码示例如下:
Swift版本
override func viewDidLoad() { super.viewDidLoad() // 两种写法都能实现效果 tabBar.selectedItem = nil // 或者:self.selectedIndex = -1 }
Objective-C版本
- (void)viewDidLoad { [super viewDidLoad]; self.tabBar.selectedItem = nil; // 或者:self.selectedIndex = -1; }
注意:如果你的项目中使用了自定义TabBar或者有其他逻辑会修改选中状态,建议把这段代码放在
viewDidAppear里执行,避免被其他初始化逻辑覆盖。
方法二:自定义TabBar控制选中状态
如果你的TabBar是完全自定义的,可以在自定义TabBar的初始化方法里,主动将所有Item的选中状态设为false,并清空选中项:
Swift版本
class CustomTabBar: UITabBar { override init(frame: CGRect) { super.init(frame: frame) resetSelectedState() } required init?(coder: NSCoder) { super.init(coder: coder) resetSelectedState() } private func resetSelectedState() { items?.forEach { $0.isSelected = false } selectedItem = nil } }
这样就能确保TabBar在初始化完成后,所有Item都处于未选中的状态啦。
内容的提问来源于stack exchange,提问作者Neelam Pursnani
相关产品推荐
相关产品推荐

