Есть ли способ изменить изображения и действия панели вкладок из встроенного ViewController? - PullRequest
0 голосов
/ 17 июня 2020

У меня есть 5 ViewController, встроенных в TabbarController. Я создал панель вкладок класса, чтобы настроить свою панель вкладок, например:

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) {
    ..
}

Я хочу изменить Tabbar изображения и действия (например, pu sh) при нажатии ChangeTabbarimageAndAction FirstView. Это возможно? Если да, то как я могу это сделать? Я искал в SO, но не могу найти никаких решений.

Ответы [ 2 ]

2 голосов
/ 17 июня 2020

Если вы хотите изменить текущее изображение или заголовок панели вкладок UIViewController, вы можете получить доступ к tabBarItem из UIViewController и изменить его свойства следующим образом:

@IBAction func ChangeTabbarimageAndAction(_ sender: Any) {
    tabBarItem.image = UIImage(named: "New Image name")
    tabBarItem.selectedImage = UIImage(named: "NewSelectedImageName")
    tabBarItem.title = "New Title"
}
1 голос
/ 17 июня 2020

Вы можете изменить действие в методе делегата панели вкладок

 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
...