如何获取自定义标签栏以在Xcode中显示标签栏项目的所选图像集?

gra*_*ury 7 xcode swift3

我已经创建了一个自定义标签栏,正确显示标签栏项目.当我选择标签/图标时,会显示标签栏项目的视图控制器,但图标不会更改为"选定图像"图标,即图标在显示视图控制器时不会更改.

我究竟做错了什么?如何将图标更新为我在IB上设置的图像作为所选图像?

这是我的一些代码:

class CustomTabBarController: UITabBarController, CustomTabBarDataSource, CustomTabBarDelegate {
 override func viewDidLoad() {
  super.viewDidLoad()
  self.tabBar.isHidden = true
  let customTabBar = CustomTabBar(frame: self.tabBar.frame)
  customTabBar.datasource = self
  customTabBar.delegate = self
  customTabBar.setup()
  self.view.addSubview(customTabBar)
 }
 // MARK: - CustomTabBarDataSource
 func tabBarItemsInCustomTabBar(_ tabBarView: CustomTabBar) -> [UITabBarItem] {
  return tabBar.items!
 }
 // MARK: - CustomTabBarDelegate
 func didSelectViewController(_ tabBarView: CustomTabBar, atIndex index: Int) {
  self.selectedIndex = index
 }   
}


class CustomTabBar: UIView {
 var tabBarItems: [UITabBarItem]!
 var customTabBarItems: [CustomTabBarItem]!
 var tabBarButtons: [UIButton]!

func setup() {
 tabBarItems = datasource.tabBarItemsInCustomTabBar(self)
 customTabBarItems = []
 tabBarButtons = []
 let containers = createTabBarItemContainers()
 createTabBarItems(containers)
}

func createTabBarItems(_ containers: [CGRect]) {

var index = 0
 for item in tabBarItems {
  let container = containers[index]
  let customTabBarItem = CustomTabBarItem(frame: container)
  customTabBarItem.setup(item)
  self.addSubview(customTabBarItem)
  customTabBarItems.append(customTabBarItem)
  let button = UIButton(frame: CGRect(x: 0, y: 0, width: container.width, height: container.height))
  button.addTarget(self, action: #selector(CustomTabBar.barItemTapped(_:)), for: UIControlEvents.touchUpInside)
  customTabBarItem.addSubview(button)
  tabBarButtons.append(button)
  index += 1
 }
}

func barItemTapped(_ sender : UIButton) {
 let index = tabBarButtons.index(of: sender)!
 delegate.didSelectViewController(self, atIndex: index)
}
Run Code Online (Sandbox Code Playgroud)

lea*_*nne 1

改变

class CustomTabBar: UIView {
Run Code Online (Sandbox Code Playgroud)

到:

class CustomTabBar: UITabBar {
Run Code Online (Sandbox Code Playgroud)

然后您的自定义标签栏将像标签栏一样!