我现在有一个CustomTabBarController类和一个CustomNavBarController类。
标签栏有五个选项卡,运行良好。导航栏类在导航栏的右侧添加三个按钮(home/messages/profile)。当我单击“主页”按钮时,下面的函数将被触发。
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 = 0CustomTabBarController.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
}
}当我单击home按钮时,如何告诉CustomNavBarController.swift中的函数加载标签栏的第一个索引?
PS:我之所以希望有两种方法返回主页,是因为标签栏在每种情况下都是不可见的。
发布于 2016-08-17 14:51:17
在您的tappedHome(_:)方法中执行以下代码应该可以做到这一点:
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let tabBarController = appDelegate.window!.rootViewController as! UITabBarController
tabBarController.selectedIndex = 0https://stackoverflow.com/questions/38999367
复制相似问题