SwiftUI TabView - anpassen der Navigation bei vielen Tabs

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

  • SwiftUI TabView - anpassen der Navigation bei vielen Tabs

    Hallo,

    ich versuche mich gerade in SwiftUI und bin dabei testweise eine TabView zu implementieren.
    Im Prinzip funktioniert die Navigation sehr gut und es scheint auch recht wenig Coding nötig um eine aus meiner Sicht sehr gute App Navigation zu implementieren.

    Ich hatte zu Anfang 4 Tabs und die Darstellung auf einem iPhoneX war gut.
    Nun habe ich zwei weitere Tabs hinzugefügt und jetzt hat SwiftUI mir zu den ersten 4 Tabs einen 5 Tab mit "More" und 3 Punkten erstellt. Klicke ich auf "More" erscheint eine
    List mit den weiteren 2 Tabs, zu denen ich dann auch ohne Probleme navigieren kann. Zusätzlich gibt es in der List View dann noch einen "Edit" Button. Hierüber kann man per Drag and Drop
    die Tabs organisieren.

    Soweit so gut, für einen Anfänger eine tolle Navigation ohne sehr viel Code :)

    Nun stelle ich mir allerdings die Frage wie ich das Aussehen der von SwiftUI automatisch erstellten Navigation anpassen kann.

    Hintergrund, wenn ich eine App in Deutsch erstelle hätte ich gerne auch nur deutsche Menü Texte, sprich wie kann ich aus "More" "Mehr" und aus "Edit" "Ändern" machen?

    Ich habe dazu so direkt im Netz nichts gefunden und hoffe hier kann mir jemand auf die Sprünge helfen ;)

    Gruß

    Ralf
  • Hallo @macmoonshine

    Danke für Deine Ausführung und den Hinweis. Ich habe da mal geschaut und sehe unter dem Punkt "Localizations" folgende Einträge:

    Base 0 files Localized
    Englisch - Development Language 0 files Localized

    Ich habe dann mal den Eintrag
    German
    hinzugefügt, aber da zeigt er auch 0 Files Localized.

    Mir ist nicht klar ob ICH hier noch was im Code ändern/hinzufügen muss, oder wie das genau funktioniert mit "Localized".
    Hast Du hier noch einen Hinweis für mich was ich hier noch machen muss?

    Gruß

    ralf
  • Für die Systemtexte (z. B. Buttons More, Edit, Standarddateiname Untitled) sollte das ausreichen. Du musst die App natürlich dann auch mit dem entsprechenden Locale starten. Im Simulator musst du das in der Regel in der Settings App umstellen. Alternativ kannst du auch im Xcode-Schema das Locale für die Ausführung explizit setzen.
    „Meine Komplikation hatte eine Komplikation.“

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

  • Sorry, aber ich stehe da echt komplett auf dem Schlauch :(
    Ich habe im Simulator unter Settings auf Deutsch umgestellt und das "iPhone" "spricht" jetzt Deutsch, sprich Settings sind jetzt Einstellungen etc..
    In meiner App ändert sich da aber rein gar nichts. Wenn ich nach "Localization Swift 5" suche dann bezieht sich das was ich finde immer auf die selber definierten Localization Strings .

    Vermutlich bin ich komplett auf dem Holzweg .. ich versteh nicht wie ich meiner App, sprich SwiftUI sagen kann/muss das sie jetzt mit Locale=de arbeitet.

    Wenn Du schreibst

    macmoonshine schrieb:

    Du musst die App natürlich dann auch mit dem entsprechenden Locale starten
    meinst Du dann das ich das in der App programmieren muss oder muss ich im IOS etwas in den Settings anpassen, was ich mir ja nicht vorstellen kann da mein iPhone ja auf Deutsch eingestellt ist ... ???

    Mir fehlt einfach der Ansatz was wo zu ändern/anzupassen ist.
    Hast Du vielleicht ein Link wo dazu was erläutert wird was ich nachlesen kann?

    Sorry, aber an der Stelle habe ich noch nie gedreht, bin halt zu neu in Swift.

    Gruß

    Ralf
  • ... was ich noch vergessen habe zu erwähnen ...
    Wenn ich unter Einstellungen auf meinem iPhone die App auswähle gibt es dort nicht den Punkt "Sprache", wie z.B. bei vielen anderen Apps !!??

    Ist es das was Du meintest? Wenn ja, wie kann ich der App den beibringen das dieser Punkt unter Einstellungen auftaucht?

    Gruß

    Ralf
  • Hallo @macmoonshine,

    ich habe gestern noch ein wenig weiter "gewühlt" und bin auf folgenden Artikel im Apple Developer Forum gestoßen:

    developer.apple.com/library/ar…e_ref/doc/uid/DTS40014938

    So wie ich es verstehe versucht IOS folgendermaßen die Sprache für die App zu bestimmen:

    1. IOS sieht sich die Language Preferences an
    2. Mit der wird nun überprüft ob die App diese Sprache auch unterstützt. Dazu wird im Bundle Directory nach einem Folder <Locale>.lproj gesucht. Gibt es diesen Folder nimmt IOS an das die App für diese Sprache localized ist und nutzt diese Sprache für die App.

    In meinem Bundle Directory gibt es keinen .lproj Ordner, auch nicht Base.lproj. Ich habe mal einen find gemacht und in einer alten App die ich mit Storyboard geschrieben habe gibt es diesen Base.lproj Ordner. Wenn ich die non-SwiftUI App in Xcode lade, und dann über die Projekt Settings - Localization Deutsch als Sprache hinzufüge, werden auch 2 Files als Localized angezeigt (Storyboards) und ich habe dann auch einen de.lproj Folder.

    Bei allen Apps mit SwiftUI fehlen diese .lproj Ordner.

    Frage:

    Ist der o.g. Mechanismus mit SwiftUI noch aktuell? Ich habe bis jetzt nichts darüber im Netz gefunden ?

    In der "alten" App mit Storyboard finde ich dann auch unter Einstellungen in der App den Punkt "Sprache" und kann dort die bei Localizations aufgeführten Sprachen auswählen.

    Für mich sieht es so aus als wenn es für SwiftUI einen anderen Weg gibt den ich noch nicht gefunden habe.

    Hätte einer von Euch die Möglichkeit bei einem SwiftUI Projekt nachzuschauen ob es .lproj Ordner gibt und ob Ihr die Sprache unter Einstellungen auf dem Gerät auswählen könnt?

    VG Ralf
  • Hallo zusammen,

    ich habe nach langem suchen und probieren neue Erkenntnisse die ich hier gerne mitteilen möchte, denn vielleicht haben andere auch noch ähnliche Probleme.
    Genau weiß ich nicht wo der Fehler bei mir liegt, es könnte allerdings auch ein Problem in Xcode sein oder, was vermutlich wahrscheinlicher ist, ich habe es noch nicht kapiert ;)

    Anyway, ich habe bei mir nun folgenden Workaround probiert und es hat funktioniert, sprich ich sehe jetzt in der TabView Navigation die deutschen Texte "Mehr" und "Bearbeiten" usw.

    Workaround:

    Wenn ich beim erstellen eine Swift UI Projektes in Xcode beim Life Cycle nicht "Swift UI App" sonder "UIKit App Delegate" auswähle, und danach die Localization "German" hinzufüge, dann
    funktioniert es einwandfrei. Beim hinzufügen der Localization wird auch sofort die Resource "LaunchScreen.storyboard" localized und es gibt dann auch in meinem Projekt Ordner die Unterordner
    Base.lproj und de.lproj.

    Warum das bei Life Cycle "Swift UI App" nicht funktioniert .. keine Ahnung, aber vielleicht hat ja hier im Forum noch einer eine Erklärung für mich.

    Gruß

    Ralf