有没有办法从嵌入式视图控制器更改选项卡栏图像和操作?



我有5个嵌入TabbarController的ViewController。我创建了一个类标签栏来自定义我的标签栏,如下所示:

class Tabbar: UITabBarController,UITabBarControllerDelegate {
var tabBarIteam = UITabBarItem()
@IBOutlet weak var tabbar: UITabBar!
override func viewDidLoad() {
super.viewDidLoad()
// THIS IS FOR FİRST TABBAR ITEM
let selectedImage1 = UIImage(named: "vitrin_active")?.withRenderingMode(.alwaysOriginal)
let deSelectedImage1 = UIImage(named: "vitrin_deactive")
tabBarIteam = self.tabBar.items![0]
tabBarIteam.image = deSelectedImage1
tabBarIteam.selectedImage = selectedImage1
.... I HAVE ALSO 4 MORE.
}

在我的第一个ViewController中,有一个按钮动作

@IBAction func ChangeTabbarimageAndAction(_ sender: Any) {
..
}

我想在点击 FirstViewChangeTabbarimageAndAction时更改Tabbar图像和操作(如推送(。这可能吗?如果是,我该怎么办?我在SO中搜索,但找不到任何解决方案。

您可以在选项卡栏的委托方法中更改操作

class yourclass: UIViewController, UITabBarDelegate {
func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
print("push or present action")
}
}

对于设置您可以使用的图像

let firstViewController:UIViewController = UIViewController()
// The following statement is what you need
let customTabBarItem:UITabBarItem = UITabBarItem(title: nil, image: UIImage(named: "YOUR_IMAGE_NAME"), selectedImage: UIImage(named: "YOUR_IMAGE_NAME"))
firstViewController.tabBarItem = customTabBarItem

如果要更改当前UIViewController的选项卡栏图像或标题,可以从UIViewController访问tabBarItem,并且可以像这样更改其属性:

@IBAction func ChangeTabbarimageAndAction(_ sender: Any) {
tabBarItem.image = UIImage(named: "New Image name")
tabBarItem.selectedImage = UIImage(named: "NewSelectedImageName")
tabBarItem.title = "New Title"
}

最新更新