Navigation Bar

Startseite Foren Deutsches LiveCode-Forum Navigation Bar

Schlagwörter: 

Ansicht von 9 Antwort-Themen
  • Autor
    Beiträge
    • #701
      DanielStriffler
      Teilnehmer

        Hallo zusammen,

        ich habe vor einer Woche mit dem Buch angefangen und mache nebenbei mein erstes eigenes Projekt. Nun hänge ich an dieser Navigation Bar.

        Ich würde gerne einfach damit in die verschieden Cards navigieren und nicht mit einem Button.
        Jedoch komme ich nich weiter 🙁
        Wie kann ich denn das richtig einbinden, so dass man verschiedene ItemName benutzten kann.

        Bei den Livecode Lessons steht

        on hiliteChanged
        go to card the hilitedItemName of me
        end hiliteChanged

        Das geht bei einem Item aber nicht bei mehreren.

        Ich weiß das ist vielleicht etwas früh am Anfang, aber mich wurmt, dass ich es nicht hinbekomm 🙂

        Liebe Grüße Daniel

      • #703
        DanielStriffler
        Teilnehmer

          Ich habe es:

          on hiliteChanged
          put the hilitedItemName of me into tItemClicked
          switch tItemClicked
          case “contacts”
          if contacts is “contacts” then
          go to card “contacts”
          end if
          break
          case “favorites”
          if contacts is “favorites” then
          go to card “favorites”
          break
          case “trash”
          if contacts is “trash” then
          go to card “trash”
          break
          end switch
          end hiliteChanged

          Leider wird das so nirgends bei LiveCode beschrieben. Durch Zufall entdeckt 🙂

        • #704
          hauke
          Administrator

            Hallo Daniel,

            es geht schon alles so wie Du es versuchen willst. Der Code, den Du zitiert hast, geht davon aus, dass die Cards, auf die Du wechseln möchtest, exakt den gleichen Namen haben wie die “Navigation Names”, die Du in Deinem “Navigation Bar Widget” eingetragen hast. Dann wird es auch funktionieren.

            Wenn diese Navigation auf allen Karten an derselben Stelle liegen soll und gleich sein soll, dann ist es übrigens am besten, wenn Du die Navigation auf der ersten Card erstellst und dann in eine Group umwandelst. Dieser Group kannst Du im Property Inspector das Attribut “Behave as Background” mitgeben, und sobald Du weitere Cards erstellst, ist diese Group dort auch vorhanden, sodass Du das Navigation Widget nur einmal anlegen musst und es später gültig für alle Seiten auch noch verändern kannst.

            Viel Erfolg!

            Hauke

          • #705
            hauke
            Administrator

              Jetzt haben sich unsere Beiträge überschnitten. Deine neue Lösung funktioniert zwar natürlich auch, ist aber weit umständlicher und macht eigentlich exakt dasselbe, denn Du brauchst im Grunde keine switch-case Unterscheidung, wenn die Cards sowieso dieselben Namen haben, die bereits in der Variable stehen. … Aber egal… viele Wege führen zum Ziel…

              Viel Erfolg!

              Hauke

            • #706
              Klaus Major
              Administrator

                Hi Daniel,

                hier stimmt Einiges nicht:

                on hiliteChanged
                   put the hilitedItemName of me into tItemClicked
                   switch tItemClicked
                      case "contacts"
                         if contacts is "contacts" then
                            go to card "contacts"
                         end if
                         break
                      case "favorites"
                         if contacts is "favorites" then
                            go to card "favorites"
                            break
                         case "trash"
                            if contacts is "trash" then
                               go to card "trash"
                               break
                         end switch
                      end hiliteChanged

                1. Es fehlt END IF bei den letzten beiden CASEs.
                Ich hatte den Code in Livecode in ein Skript kopiert und wie man sieht, es wird nicht korrekt eingerückt. Einmal TAB drücken im Handler, dann formatiert LC den Handler korrekt und man hat auch eine optische Kontrolle, ob alles korrekt ist.
                2. Die IF THEN Abfrage ist hier doppelt gemoppelt, SWITCH…CASE reicht völlig aus
                3. die Variable -> contacts ist nirgendwo definiert bzw. nicht mit einem Wert gefüllt, daher hat sie als Inhalt den STRING “contacts” und nur der erste CASE funktioniert, wenn auch mehr durch Zufall. 😉

                Gruß

                Klaus

              • #707
                DanielStriffler
                Teilnehmer

                  Super danke für die Antworten.

                  Aber irgendwie geht das nicht. Ich habe die Cards wie im “Navigation Bar Widget” unter “Navigation Names”eingetragen.
                  Dann den Code

                  on hiliteChanged
                  go to card “card1”
                  go to card “card2”
                  go to card “card3”
                  end hiliteChanged

                  das endet immer auf der 3. Card

                  Wie bekomm ich das hin dass auch beim klick auf das zweite Icon die card2 erscheint?!.
                  Sorry für die dämlichen Fragen


                  @Klaus
                  stimmt 🙁 so funktioniert es auch nicht

                • #711
                  Klaus Major
                  Administrator

                    Hi Daniel,

                    Dein Skript sagt Livecode nur:
                    Wenn jemand auf den “Navigation Bar” klickt, dann gehe zur Karte “Card1, dann zur Karte “Card2” und dann zur Karte “Card3”, darum siehst Du immer nur die Karte “Card3”

                    Dieses Skript, wie Du oben schon einmal erwähntest, ist das richtige:

                    on hiliteChanged
                       go cd the hilitedItemName of me
                    end hiliteChanged

                    Dafür müssen die Karten auch “Card1” etc. heissen und die “itemnames” genau so!
                    Ich denke, das war bei Dir vorher nicht der Fall, weshalb dieses Skript nicht funktioniert hat.

                    Ist ja auch logisch, denn im Skript steht:
                    Gehe zu der Karte, die so heisst wie das angeklickte “hilitedItemName” von mir 🙂

                    Das Gute daran ist ja, daß dem User durchaus ein anderer Name angezeigt werden kann, ebenso wie bei Buttons, deren NAME und LABEL nicht inbedingt identisch sein müssen.
                    Ideal bei mehrsprachigen Anwendungen!

                    Gruß

                    Klaus

                  • #712
                    DanielStriffler
                    Teilnehmer

                      Achsoooo 🙂 das ist ja einfach und funktioniert tadellos

                      Oh man und ich dachte ich muss für das “hilitedItemName” den Namen einsetzten und habe immer Fehler bekommen, da etwas fehlt.

                      Vielen leiben Dank an euch!

                    • #713
                      Klaus Major
                      Administrator

                        Bei Livecode ist es immer einfacher, als man denkt! 😉

                      • #22989
                        Anonym

                          und was kann man machen wenn der hilited icon einfach auf ein anderes icon springt obwohl der cardwechsel problemlos erfolgt?

                      Ansicht von 9 Antwort-Themen
                      • Du musst angemeldet sein, um auf dieses Thema antworten zu können.