【问题标题】:Select a tab bar item programmatically (not using UITabBarController)以编程方式选择标签栏项目(不使用 UITabBarController)
【发布时间】:2015-05-30 22:54:51
【问题描述】:

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

class MyViewController: UIViewController, UITabBarDelegate {

    func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem!) {
        // do something
    }
}

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

再一次,我没有使用 UITabBarController

谢谢

【问题讨论】:

    标签: ios uitabbar uitabbaritem


    【解决方案1】:
    [tabBar setSelectedItem: [tabBar.items objectAtIndex:0]];
    

    我认为很快会是:

    tabBar.selectedItem = tabBar.items![0] as UITabBarItem
    

    【讨论】:

    • 谢谢福斯特。我实际上必须编写这段代码:tabBar.selectedItem = tabBar.items![0] as UITabBarItem 但是,我想模拟第一个选项卡上的“tap”事件。这可能吗?
    • 我不确定你的意思。您是说当您执行 tabBar.selectedItem = tabBar.items![0] as UITabBarItem 时没有调用委托方法 tabBar(_:didSelectItem:) 吗?
    • 是的。我正是这个意思。该代码只是将选项卡设置为“活动”并且不会触发tabBar(_:didSelectItem:)
    • 不允许直接修改由标签栏控制器管理的标签栏。遇到异常!!对我有用的是:self.tabBarController?.tabBar.selectedItem = 2
    • @Foster Bass : 调用 tabBar(_:didSelectItem:) 方法违背了它的目的,因为该方法必须由其委托定义自动触发。
    【解决方案2】:

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

    var tabbar:UITabBar?//if declare like this
    
    tabbar!.selectedItem = self.tabbar!.items![0] as? UITabBarItem
    

    let tabbar = UITabBar()//if declare and initilize like this
    
    tabbar.selectedItem = self.tabbar.items![0] as? UITabBarItem
    

    【讨论】:

    • as? UITabBarItem 是多余的,至少对于较新版本的 Swift,您会收到警告:从 'UITabBarItem' 到 'UITabBarItem' 的条件转换总是成功跨度>
    【解决方案3】:

    在 viewDidLoad 事件上选择活动标签栏项目之前

    [self.tabBar setSelectedItem: [self.tabBar.items objectAtIndex:0]];

    【讨论】:

      【解决方案4】:

      斯威夫特 3:

      tabBarController.selectedIndex = 0 // (or any other existing index)
      

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          在 Xamarin.ios 中,我们可以这样使用 mainTabBarController.selectedIndex=3;

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-02-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-03-02
            • 2017-12-11
            • 1970-01-01
            • 2017-01-14
            相关资源
            最近更新 更多