我有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"
}