有没有办法从嵌入式 ViewController 更改 Tabbar 图像和操作?

Posted

技术标签:

【中文标题】有没有办法从嵌入式 ViewController 更改 Tabbar 图像和操作?【英文标题】:Is there a way to change Tabbar images and action from embedded ViewController? 【发布时间】:2020-06-17 08:46:34 【问题描述】:

我有 5 个嵌入 TabbarController 的 ViewController。我创建了一个类 Tabbar 来自定义我的 Tabbar,例如:

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.

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

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

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

【问题讨论】:

【参考方案1】:

如果您想更改当前UIViewController 的标签栏图像或标题,您可以从UIViewController 访问tabBarItem,并可以像这样更改它的属性:

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

【讨论】:

当我将tabBarItem 声明为tabBarItem = self.tabBarController!.tabBar.items![0] 时,我可以更改图像,谢谢。我也可以将此标签栏添加为推送或呈现操作吗? 我认为@Jawad 已经发布了该问题的答案,您只需为UITabBarController 设置代表即可。但是,您原来的帖子中是否问过当前的控制器部分?【参考方案2】:

您可以在标签栏的委托方法中更改操作

 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

【讨论】:

以上是关于有没有办法从嵌入式 ViewController 更改 Tabbar 图像和操作?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 ViewController 中分离(推送)到 NavigationController 中嵌入的另一个 ViewController?

从 ViewController 加载 SKScene

实现从 viewController 到 DataManager 类的委托

从嵌入式子UIViewController中获取Parent ViewController

C 中的嵌入式 python:有没有办法从压缩的 python 存档中正确导入 numpy?

具有多个嵌入 segues 的 ContainerView