问题描述
我只能使用代码将动作添加到选项卡栏项,但是我更习惯于使用Interface Builder进行编码,并且努力使用我所了解的关于设置选项卡栏控制器的知识通过操作选项卡项目以编程方式将操作添加到IB中设置的选项卡栏。有了一个选项卡栏控制器和三个连接到IB中所述TBC的视图控制器,我该如何添加一个动作,当按下中间的选项卡栏项时,将以模态显示关联的视图控制器?谢谢。
解决方法
您只能在情节提要的选项卡栏中设置关联的视图控制器。您不能将操作添加到标签栏项。
当您在标签栏中选择一个标签时,tabBarController
将自动显示关联的视图控制器。为防止这种情况,您必须在tabBarController(_ tabBarController: UITabBarController,shouldSelect
子类中实现UITabBarControllerDelegate
的{{1}}方法,在这里可以决定是否显示所选的标签栏项。
不要忘记在您的tabBarController
子类中设置delegate
。
UITabBarController
,
此代码对我有用:
import UIKit
class WayTBC: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
// Tab Bar Customisation
tabBar.barTintColor = .systemPink
tabBar.tintColor = .systemTeal
tabBar.unselectedItemTintColor = .systemGray
tabBar.isTranslucent = false
viewControllers = [
createTabBarItem(tabBarTitle: "Search",tabBarImage: "ic_home_search",viewController: SearchVC()),createTabBarItem(tabBarTitle: "Tab 2",createTabBarItem(tabBarTitle: "Tab 3",createTabBarItem(tabBarTitle: "Tab 4",viewController: SearchVC())
]
// Do any additional setup after loading the view.
}
func createTabBarItem(tabBarTitle: String,tabBarImage: String,viewController: UIViewController) -> UINavigationController {
let navCont = UINavigationController(rootViewController: viewController)
navCont.tabBarItem.title = tabBarTitle
navCont.tabBarItem.image = UIImage(named: tabBarImage)
// Nav Bar Customisation
navCont.navigationBar.barTintColor = .white
navCont.navigationBar.tintColor = .white
navCont.navigationBar.isTranslucent = false
return navCont
}