Swift:如何使用Interface Builder将动作添加到选项卡栏项?

问题描述

我只能使用代码将动作添加到选项卡栏项,但是我更习惯于使用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
}