以编程方式选择选项卡栏项(不使用UITabBarController)

tal*_*999 21 uitabbaritem uitabbar ios

我有一个从UIViewControler派生的视图(不是UITabBarController).在此视图中,我添加了一个带有多个标签栏项的标签栏.我使用UITabBarDelegate允许视图在用户点击每个标签栏项时执行某些操作.

class MyViewController: UIViewController, UITabBarDelegate {

    func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem!) {
        // do something
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我们如何在首次加载视图时以编程方式选择第一个标签栏项?请注意,我希望第一个标签项也处于"活动"状态.

同样,我没有使用UITabBarController

谢谢

Fos*_*ass 40

[tabBar setSelectedItem: [tabBar.items objectAtIndex:0]];
Run Code Online (Sandbox Code Playgroud)

我认为这很快就会:

tabBar.selectedItem = tabBar.items![0] as UITabBarItem
Run Code Online (Sandbox Code Playgroud)

  • 不允许直接修改由标签栏控制器管理的标签栏.得到了例外!! 对我有用的是:self.tabBarController?.tabBar.selectedItem = 2 (4认同)
  • 谢谢福斯特。实际上,我必须编写以下代码:`tabBar.selectedItem = tabBar.items![0]作为UITabBarItem`,但是,我想在第一个选项卡上模拟“ tap”事件。那可能吗? (2认同)
  • 是.我正是这个意思.该代码只是将选项卡设置为"活动",并且不会触发`tabBar(_:didSelectItem:)` (2认同)

Ali*_*ens 12

斯威夫特3:

tabBarController.selectedIndex = 0 // (or any other existing index)
Run Code Online (Sandbox Code Playgroud)


Rav*_*mar 6

在 swift 如果使用 tabbar 不是 tabbarcontroller 设置默认选择

var tabbar:UITabBar?//if declare like this

tabbar!.selectedItem = self.tabbar!.items![0] as? UITabBarItem
Run Code Online (Sandbox Code Playgroud)

或者

let tabbar = UITabBar()//if declare and initilize like this

tabbar.selectedItem = self.tabbar.items![0] as? UITabBarItem
Run Code Online (Sandbox Code Playgroud)


小智 6

如果你在 UITabBarController 里面,你可以使用self.selectedIndex = // set target index