Swift:如何通过按导航栏按钮访问标签栏项目

Posted

技术标签:

【中文标题】Swift:如何通过按导航栏按钮访问标签栏项目【英文标题】:Swift: How to access a tab bar item by pressing a nav bar button 【发布时间】:2016-08-17 14:24:16 【问题描述】:

我目前有一个 CustomTabBarController 类和一个 CustomNavBarController 类。

标签栏有五个标签,工作正常。导航栏类在我的导航栏右侧添加了三个按钮(主页/消息/配置文件)。当我点击主页按钮时,会触发下面的功能。

CustomNavBarController.swift(仅 tappedHome 函数)

func tappedHome(sender: UIButton) 
     // Go to home page (tab bar index 0)

这是我的 AppDelegate 和 CustomTabBar 文件。

AppDelegate.swift

    window?.rootViewController = CustomTabBarController()
    let tabBar: UITabBarController = self.window?.rootViewController as! UITabBarController
    tabBar.selectedIndex = 0

CustomTabBarController.swift

class CustomTabBarController: UITabBarController, UITabBarControllerDelegate 

override func viewDidLoad() 

    super.viewDidLoad()

    self.delegate = self

    self.viewControllers = [createDummyNavControllerWithTitle("News", imageName: "icon_news", viewController: MainController()),
                            createDummyNavControllerWithTitle("Games", imageName: "icon_games", viewController: GamesController()),
                            createDummyNavControllerWithTitle("Students", imageName: "icon_students", viewController: StudentsController()),
                            createDummyNavControllerWithTitle("Ranking", imageName: "icon_rank", viewController: StatsController()),
                            createDummyNavControllerWithTitle("Info", imageName: "icon_info", viewController: InfoController())]


func tabBarController(tabbarController: UITabBarController, didSelectViewController viewController: UIViewController) 

     self.title = viewController.title


// Shortcut function for the tab bar items
private func createDummyNavControllerWithTitle(title: String, imageName: String, viewController: UIViewController) -> UINavigationController 

    viewController.title = title

    let navController = UINavigationController(rootViewController: viewController)
    navController.tabBarItem.title = title
    navController.tabBarItem.image = UIImage(named: imageName)?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)

    return navController


当我单击主页按钮时,如何告诉 CustomNavBarController.swift 中的函数加载标签栏的第一个索引?

PS:我想要两种方式返回主页的原因是标签栏在每种情况下都不可见。

【问题讨论】:

【参考方案1】:

在您的 tappedHome(_:) 方法中执行以下代码应该可以解决问题:

let appDelegate  = UIApplication.sharedApplication().delegate as! AppDelegate
let tabBarController = appDelegate.window!.rootViewController as! UITabBarController
tabBarController.selectedIndex = 0

【讨论】:

以上是关于Swift:如何通过按导航栏按钮访问标签栏项目的主要内容,如果未能解决你的问题,请参考以下文章

如何停止加载标签栏项目选择的视图?

如何在 Swift 的标签栏项目中设置图像?

如何通过按钮单击控制标签栏项目?

按下标签栏项目时如何关闭视图?

ecshop按自定义导航栏上面的标签最下面的一排文章标签不居中 偏左

iOS禁用按标签栏按钮弹出到根视图