有没有办法从嵌入式 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 到 DataManager 类的委托
从嵌入式子UIViewController中获取Parent ViewController