Ich habe eine UITabBar mit eigenen UITabBarController und in diesem Controller mache ich einige Anpassungen an der TabBar wie TabBar Elemente deaktivieren/aktivieren. Ich mache es in ViewDidLoad.UITabBar deaktivieren/aktivieren Elemente auf UIButton klicken
Auslöser für diese Anpassungen wird jedoch auf einer der zugehörigen Registerkarten und es View Controller sein. Der Auslöser wird eine Schaltfläche sein und sobald die Schaltfläche gedrückt wird, sollte einer der Punkte auf der Registerkarte von "deaktiviert" zu "aktiviert" gehen.
Gibt es eine TabBar Reload-Funktion, die ich verwenden muss oder muss ich irgendwie UITabBarController neu laden, um dies zu ermöglichen?
Danke - ich schätze jede Hilfe, die Sie zur Verfügung stellen können!
Bearbeiten: Meine VCs für UITabBarController und UIViewController sind unten.
UITabBarController
class TabBarVC: UITabBarController, TopRatedVCDelegate {
var tabBarItem1 = UITabBarItem()
var tabBarItem2 = UITabBarItem()
var tabBarItem3 = UITabBarItem()
var tabBarItem4 = UITabBarItem()
override func viewDidLoad() {
super.viewDidLoad()
}
func setbar() {
let tabBarControllerItems = tabBar.items
if let tabArray = tabBarControllerItems {
tabBarItem1 = tabArray[0]
tabBarItem2 = tabArray[1]
tabBarItem3 = tabArray[2]
tabBarItem4 = tabArray[3]
}
tabBarItem1.isEnabled = true
tabBarItem1.badgeValue = "99"
tabBarItem2.isEnabled = false
tabBarItem3.isEnabled = true
tabBarItem4.isEnabled = true
}
}
UIViewController mit Taste, um Sie
protocol TopRatedVCDelegate: class {
func setbar()
}
class TopRatedVC: UIViewController {
@IBOutlet weak var userDefValueLbl: UILabel!
weak var delegate: TopRatedVCDelegate?
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func btnPressed(_ sender: Any) {
delegate?.setbar()
}
}
Sie möchten wahrscheinlich Protocol/Delegate-Muster verwenden. Dadurch kann Ihre Trigger-Taste zu Ihrem benutzerdefinierten UITabBarController zurückrufen, wo Sie die Tabs zum Deaktivieren/Aktivieren (oder was auch immer Sie tun möchten) handhaben können. – DonMag
Das klingt wie es funktionieren kann. Hast du ein Beispiel, wie ich das machen kann? Ich habe es tatsächlich auf eine andere Art und Weise versucht, indem ich einen Wert in UserDefaults gespeichert habe, sobald die Schaltfläche gedrückt und die Überprüfung durchgeführt wurde, aber in UITabBarController, aber das funktionierte erst, nachdem die TabBar geladen wurde. Ich möchte, dass es funktioniert, wann immer ich will - so das "Reload" der Bar zu nennen, sobald die Schaltfläche für die Überprüfung durchgeführt wird ... –