मैंने एक कस्टम टैब बार बनाया है जो टैब बार आइटम को सही तरीके से प्रदर्शित कर रहा है। जब मैं एक टैब/आइकन चुनता हूं तो टैब बार आइटम का व्यू कंट्रोलर प्रदर्शित होता है लेकिन आइकन 'चयनित छवि' आइकन में नहीं बदलता है, यानी जब उनके व्यू कंट्रोलर को दिखाया जा रहा है तो आइकन नहीं बदलते हैं।एक्सकोड में टैब बार आइटम के चयनित छवि सेट को प्रदर्शित करने के लिए कस्टम टैब बार कैसे प्राप्त करें?
मैं क्या गलत कर रहा हूं? मैं आईबी पर चयनित छवियों के रूप में सेट की गई छवियों को अपडेट करने के लिए आइकन कैसे प्राप्त कर सकता हूं? करने के लिए
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)
}
छवियों Assets.xcassets में मौजूद है? – leanne
और, क्या कोई कारण है कि आपने अपनी 'कस्टमटैबबार' कक्षा को 'यूआईटीबीबी' के बजाय 'UIView' के उप-वर्ग में सेट किया है? – leanne