Views ändern!? Hilfe!

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

Rabattcode für die heise MacDev 2020: Macoun20

Aufgrund der Corona-Krise: Die Veröffentlichung von Stellenangeboten und -gesuchen ist bis 31.12.2020 kostenfrei. Das beinhaltet auch Angebote und Gesuche von und für Freischaffende und Selbstständige.

  • Views ändern!? Hilfe!

    Hallo alle zusammen!

    Zuerstmal Hallo ich bin relativ frisch in IOS bzw Swift entwicklung und habe wenig bis keine Erfahrung in Programmierung vorher gehabt! Aber nun möchte ich gerne voll durchstarten und habe mir auch schon die ganzen Basics selbst mit Videokursen und Büchern beigebracht. In meiner Ansicht lernt man am besten Programmieren indem man sachen selbst schreibt und nicht irgendwelche Videos oder Code Zeilen abtippt deswegen habe ich mir vorgenommen ein eigernes Projekt zu starten das ich umsoweiter meine Kenntnisse vorransschreiten weiterentwickeln kann. Und ich bin nun soweit das ich die ersten Versuche wagen möchte ich habe nur ein Problem, alle tutorials die ich bis jetzt zu dem Thema gesucht und gefunden habe zünden bei mir nicht ich verstehe es einfach nicht und das depremiert mich weswegen ich mich jetzt an euch wende! Und zwar:

    Es geht um folgendes ich habe eine App die 3 ViewController haben soll. Einen der immer Angezeigt wird wenn die App startet also quasi eh die Standard View und dann noch eine View wo man Einstellungen an der App vornehmen kann und eine die dazu dient Einheiten hinzuzufügen konkret in meinem Fall geht es um Stunden also quasi eine Art Stundenzähler. Aber ich habe keine ahnung wie ich effektiv und schön zwischen den Views wechsle da alle Tutorials die ich gefunden habe mir irgendwie nicht einleuchten. Ich habe unten das Bild angehängt wo man sieht welche Views ich habe und die Datein dazu das sieht dann so aus:



    Anhand der Pfeile ist makiert zu welcher View man wechseln soll wenn man auf den Button drückt. Ich suche nach einer effizienten lösung die auch schön aussieht nicht so wie man findet das einfach unendliche Views übereinander gestappelt werden. Auch gerne würde ich jede View vollwertig angezeigt haben und nicht so halb drüber gelegt! Kann mir bitte jemand helfen wie ich das am besten mache? Das ist nämlich das einzige was mich daran hindert die erste Stage meiner App zu programmieren!

    LG und vielen Dank!
  • Blanus schrieb:

    Anhand der Pfeile ist makiert zu welcher View man wechseln soll wenn man auf den Button drückt. Ich suche nach einer effizienten lösung die auch schön aussieht nicht so wie man findet das einfach unendliche Views übereinander gestappelt werden.
    Willkommen im Forum!

    Deine Fragestellung schreit nach einem UINavigationController. Mit diesem kannst Du auf "Knopfdruck" neue Views anzeigen (das Stichwort ist hierbei "Push-Segue" oder ein "pushController") so dass automatisch eine Rücksprungmöglichkeit zur vorigen View gegeben ist. Letztlich werden die Views intern gestapelt, die äußere Darstellung ist davon unberührt. Wenn Du neben der dann angezeigten UINavigationBar einen eigenen Rücksprung-Button einrichten möchtest, geht das auch - per Code oder Segue.

    Blanus schrieb:


    Auch gerne würde ich jede View vollwertig angezeigt haben und nicht so halb drüber gelegt!
    Ich vermute, Du hast die Views als Popover aufgerufen, dann ist dieses "Stapeln" die Darstellung unter iOS 13. Wenn Du den o.g. Ansatz wählst, entfällt dieser Effekt. Ansonsten müsstest Du Deine Segue anpassen und nicht "Popover" verwenden.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • MyMattes schrieb:


    Deine Fragestellung schreit nach einem UINavigationController. Mit diesem kannst Du auf "Knopfdruck" neue Views anzeigen (das Stichwort ist hierbei "Push-Segue" oder ein "pushController") so dass automatisch eine Rücksprungmöglichkeit zur vorigen View gegeben ist. Letztlich werden die Views intern gestapelt, die äußere Darstellung ist davon unberührt. Wenn Du neben der dann angezeigten UINavigationBar einen eigenen Rücksprung-Button einrichten möchtest, geht das auch - per Code oder Segue.
    Hallo Mattes,

    danke für die schnelle Antwort! Ja ganz genau so etwas meine ich das ich die Views ändern kann und jederzeit die möglichkeit habe zum vorherigen zurückzukommen! Kannst du mir zufällig ein beispiel geben wie das genau funktioniert? Muss ich diesen zuerst aus der ObjectLibary wie einen Button erstellen? Oder ist dieser rein Codebasiert? Würde mich sehr auf eine Antwort freuen!

    LG
  • Blanus schrieb:

    Kannst du mir zufällig ein beispiel geben wie das genau funktioniert? Muss ich diesen zuerst aus der ObjectLibary wie einen Button erstellen? Oder ist dieser rein Codebasiert?
    Es geht beides und - auch wenn ich meine UI lieber programmatisch erstelle - der Anfang ist über den Interface-Builder sicherlich leichter. Dort kannst Du den Navigation-Controller als z. B. als Root-Controller hinzufügen und ihn mit den eigentlichen "Content-Views" verknüpfen. Beispiele dazu wirst Du im Netz massenhaft finden, da es ein absolut gängiger, grundsätzlicher UI-Aufbau ist.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • MyMattes schrieb:

    Es geht beides und - auch wenn ich meine UI lieber programmatisch erstelle - der Anfang ist über den Interface-Builder sicherlich leichter. Dort kannst Du den Navigation-Controller als z. B. als Root-Controller hinzufügen und ihn mit den eigentlichen "Content-Views" verknüpfen. Beispiele dazu wirst Du im Netz massenhaft finden, da es ein absolut gängiger, grundsätzlicher UI-Aufbau ist.
    Mattes

    Hallo Mattes leider finde ich dazu garnichts natürlich zwischen den Views zu wechseln bekomme ich schon irgendwie hin aber mein problem ist das sich der ViewController dann immer über dem anderen aufmacht und nicht wie der RootViewController angezeigt wird. Das ist mein Problem ich habe dir unten nochmal 2 Bilder angehängt was ich meine. Ich finde dazu Online garnichts, ich habe mir auch die Option der Navigationbar angeschaut aber die finde ich auch nicht zielführend da das erstesn eine Zeile oben einfügt was ich nicht will. und zweites gHilft mir das dann nur in einem Fall wenn ich aber den anderen Button verwenden will dann geht das auch nicht mehr so wie ich das gerne hätte. Basically möchte ich einfach mit Buttons zwischen den ViewController wechseln und diese alle wie den RootViewController anzeigen lassen, ohne popover und sonstigen schnick schnack!? Verstehst du was ich meine. Swift ist so eine tolle und starke Sprache und jetzt würde ich plötzlich 200 Sachen um eine neuen View anzeigen zu lassen das kann doch nicht sein oder? Kannst du mir bitte helfen ich bin echt am verzweifeln :(((

    LG Tobi
    Bilder
    • gewuenschte_darstellung-min.jpg

      95,54 kB, 880×1.744, 70 mal angesehen
    • unerwuenschte_Darstellung-min.jpg

      39,12 kB, 840×578, 72 mal angesehen
  • Blanus schrieb:

    ich habe mir auch die Option der Navigationbar angeschaut aber die finde ich auch nicht zielführend da das erstesn eine Zeile oben einfügt was ich nicht will. und zweites gHilft mir das dann nur in einem Fall wenn ich aber den anderen Button verwenden will dann geht das auch nicht mehr so wie ich das gerne hätte.
    Hallo Tobi,

    ich sprach nicht von einer NavigationBar, sondern von einem NavigationController. Diesen kannst Du als initialen Controller im Storyboard hinterlegen und ihm mitgeben, dass er keine NavigationBar darstellen soll. Dann kommen noch drei ViewController:
    1. Der Root-ViewController mit zwei Buttons zum Verzweigen auf die Folge-Views A und B. Beide verbindest Du mit Show-Segues. Ausserdem muss Du hier eine eigene ViewController-Klasse nutzen, die eine Methode hat, welche als IBAction im Storyboard auswählbar ist. Zum Beispiel so (Objective-C):

      Quellcode

      1. - (IBAction)prepareForUnwindSegue:(UIStoryboardSegue *)segue
      2. {
      3. }
    2. Den Folge-ViewController A, dessen View einen Button für den Rücksprung hat. Von diesem ziehst Du eine Verknüpfung auf das "Exit"-Icon im Kopf des ViewControllers im Interface-Builder und wählst die o. g. Action aus. Damit hast Du eine Unwind-Segue auf den Root-ViewController erstellt.
    3. Das gleiche mit dem Folge-ViewController B.
    Es gibt keine NavigationBar, die Views werden nicht "gestapelt" (als Popovers) angezeigt und Du hast Deine eigenen Buttons. Ich hänge Dir ein Beispiel-Project in Objective-C an. Da es quasi keinen Code beinhaltet (und ich kein Swift kann), sollte das kein Problem darstellen.

    Mattes
    Dateien
    • Test-Views.zip

      (35,1 kB, 68 mal heruntergeladen, zuletzt: )
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Wolf schrieb:

    Hall Blanus,

    wenn du schon anfängst dich mit der Materie zu beschäftigen, würde ich direkt einen Blick auf SwiftUI werfen. Hier mal ein Link zum einstieg.

    Schöne Grüsse
    Wolf
    Hallo Wolf,

    Ich habe mir das schon angeschaut und ich finde es garnicht schlecht aber eines meiner Hauptprobleme ist das es nur für Geräte mit IOS 13 geht und damit würde man sich je nach Region bis zu 15% der User aussperren :(