Badge an TabView Item

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Badge an TabView Item

    Hallo,

    ich würde gerne einen Badge an einemTabView Item aktualisieren und habe schon mit @StateObject und @ObservedObject versucht, aber irgendwie erscheint kein Badge bei einer Änderung.
    Der Aufbau meiner App ist wie folgt:

    Eine TabView, in der andere Views (welche jeweils in eigenen ?Dateien? existieren) angezeigt werden. In einer der Views in der Tabview wird ein Counter verändert, und diesen Counter würde ich gerne an die TabView "Übertragen" und dort als Badge im Tabview Item anzeigen. Wie ich schon sagte, habe ich mit @StateObject und @ObservedObject schon rum probiert, aber die Änderungen an dem Badge des TabviewItems werden nie angezeigt, als würde sich der State nicht ändern.

    Ich habe ein Class die das ganze speichern soll:

    Quellcode

    1. class Badge: ObservableObject {
    2. @Published var counter:Int = 0
    3. }
    Dann die TabView:

    Quellcode

    1. struct Tabs: View {
    2. @ObservedObject var newMenus:Badge
    3. @State var selectedTab:Int = 0
    4. var body: some View {
    5. TabView(selection: $selectedTab) {
    6. openMenus()
    7. .tabItem {
    8. Label("aktuelle Bestellungen", systemImage: "clock.badge.checkmark")
    9. }
    10. .badge(newMenus.counter)
    11. finishedMenus()
    12. .tabItem {
    13. Label("erledigte Bestellungen", systemImage: "checklist.checked")
    14. }
    15. allOrdersToday()
    16. .tabItem {
    17. Label("offenen Bestellungen", systemImage: "checklist.unchecked")
    18. }
    19. }
    20. }
    21. }
    Alles anzeigen

    und in der openMenus() View habe ich dann das StateObject das sich ändert:

    Quellcode

    1. struct openMenus: View {
    2. @StateObject var newMenus = Badge()
    3. .....
    4. func getAllCheckIns() {
    5. .....
    6. newMenus.counter = lastOrderCount
    7. }
    Was mache ich denn falsch?

    Grüße

    Dirk

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Qvex23 ()

  • Manches erledigt sich auch durch viel Try and Error. Habe es nun ander herum gelöst.

    Im Tabview habe ich nun die @State Variable

    Quellcode

    1. import SwiftUI
    2. struct Tabs: View {
    3. @State var newOrderCount:Int = 0
    4. @State var selectedTab:Int = 0
    5. var body: some View {
    6. TabView(selection: $selectedTab) {
    7. openMenus(newOrderCount: $newOrderCount)
    8. .tabItem {
    9. Label("aktuelle Bestellungen", systemImage: "clock.badge.checkmark")
    10. }
    11. .badge(newOrderCount)
    12. finishedMenus()
    13. .tabItem {
    14. Label("erledigte Bestellungen", systemImage: "checklist.checked")
    15. }
    16. allOrdersToday()
    17. .tabItem {
    18. Label("offenen Bestellungen", systemImage: "checklist.unchecked")
    19. }
    20. }
    21. }
    22. }
    Alles anzeigen

    welche ich dann in der Subview mit @Binding verändere.


    Quellcode

    1. struct openMenus: View {
    2. @Binding var newOrderCount:Int
    3. ....
    4. newOrderCount +=1
    5. .....
    6. }
    Und siehe da: es geht!

    Grüße

    Dirk