SegmentedControl - Welcher Index ist ausgewählt (Anfänger)

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

  • SegmentedControl - Welcher Index ist ausgewählt (Anfänger)

    Erst mal hi Community,

    ich bau grad ein simples Übungsprogramm, das nichts kann ausser per Knopfdruck hoch und runter zu zählen.
    Jetzt hab ich ein SegmentedControl eingebaut, welches entscheiden soll ob man 1, 10, 100 hochzählt usw..
    Wie sag ich "Ihm" jetzt, was ausgewählt ist, hab das so implementiert, dass nachgesehen wird, welcher Index ausgewählt ist:

    Quellcode

    1. - (IBAction)modusselektiert:(UISegmentedControl *)modus
    2. {
    3. int modi = modus.selectedSegmentIndex
    4. if ([modi isEqual:1]) {
    5. brain.erhoeher = 10;
    6. }//usw..



    leider nimmt er das nicht an, denn er zählt immer nur um 1 hoch. Was mach ich falsch?

    Schonmal danke im Vorraus,
    mfG Champy
  • Du bekommst ja ein integer zurück, das testest Du folgendermaßen:

    Quellcode

    1. - (IBAction)modusselektiert:(UISegmentedControl *)modus
    2. {
    3. int modi = modus.selectedSegmentIndex
    4. if ( modi == 1) {
    5. brain.erhoeher = 10;
    6. }//usw..

    Das [ ... isEqual ] benutzt Du nur bei Objekttypen. Die von C geerbten eingebauten Skalartypen (int, float, double usw) testest Du mit dem C-Operator ==

    Gruß, Markus
  • Champy schrieb:

    hmm..danke aber es funktioniert immernoch nicht. Ich frag mich gerade ob es reicht in der .xib im Interface Builder vom SegmentedControl nur zum FileOwner zu "ziehen". Irgendie reagieren die Segmente überhaupt nicht.
    Was sagt der Debugger, wird die Methode ausgeführt ?

    -(IBAction)modusselektiert:(UISegmentedControl *)modus
  • ja, der Value Change ist verbunden, der debugger sagt bei breakpoint in der zeile vom methodenkopf und Run breakpoints: on" einfach "No Issues", irgendwie bin ich grad zu dumm um das auszuklabaudern.

    In der Beispiel Datei hab ich gesehen dass du das SelectedValueIndex in Brackets, also als Methode verwendet hast, ich hingegen mit Dot Notation als Property, hab aber woanders gelesen dass das durchaus so verwendet werden kann, woran liegt das nur? :/
  • Champy schrieb:

    ja, der Value Change ist verbunden, der debugger sagt bei breakpoint in der zeile vom methodenkopf und Run breakpoints: on" einfach "No Issues", irgendwie bin ich grad zu dumm um das auszuklabaudern.

    In der Beispiel Datei hab ich gesehen dass du das SelectedValueIndex in Brackets, also als Methode verwendet hast, ich hingegen mit Dot Notation als Property, hab aber woanders gelesen dass das durchaus so verwendet werden kann, woran liegt das nur? :/

    Bleibt der Debugger auch stehen ? Blau markierte Zeile !

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von ramo ()

  • Champy schrieb:

    Bei mir steht da unten im Debugger einfach "No Editor" da stimmt was nicht oder?


    Setze doch in meinem Beispiel einmal einen Breakpoint auf die Methode und starte mit Build & Debug !

    Ja und natürlich die " SegmentControls" auch betätigen !

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

  • da steht einfach (ich habe den Breakpoint in der SegViewController.m gesetzt)
    "There is no SDK with the name "Iphoneos" is wohl irgendwas lokales bei dir.

    Wenn man eine Warnung an einer Stelle in der Methode bekommt, kann man dann davon ausgehen, dass sie ausgeführt wird?

    mfG Champy
  • Champy schrieb:

    da steht einfach (ich habe den Breakpoint in der SegViewController.m gesetzt)
    "There is no SDK with the name "Iphoneos" is wohl irgendwas lokales bei dir.

    Wenn man eine Warnung an einer Stelle in der Methode bekommt, kann man dann davon ausgehen, dass sie ausgeführt wird?

    mfG Champy


    Wo steht und wann steht "There is no SDK with the name "Iphoneos" ? Ich verwende Xcode 3.2.5 und iOS 4.2.1 ?

    Läuft mein Beispiel bei dir also nicht ?
  • Mein Simulator hat 4.1. läuft nicht, ja.

    Aber ich hab mich sowieso übernommen, ich hab nicht mal gewusst das man noch ein IBOutlet machen muss, ich dachte das funktioniert wie ein Button, muss mich da jetzt erst mal reinfuchsen, aber danke euch für die Tipps.

    mfG Chapmy
  • Champy schrieb:

    Mein Simulator hat 4.1. läuft nicht, ja.

    Aber ich hab mich sowieso übernommen, ich hab nicht mal gewusst das man noch ein IBOutlet machen muss, ich dachte das funktioniert wie ein Button, muss mich da jetzt erst mal reinfuchsen, aber danke euch für die Tipps.

    mfG Chapmy


    Da ich auch Anfänger bin kann ich es Dir nicht " fachmännisch " erklären, aber ein IBOutlet ( wie beim UIButton ) brauchst du nur um Eigenschaften des Buttons oder eben der SegmentControl zu ändern, um die IBAction,s abzufangen reicht die Verbindung im IB von Value Changed auf die Methode im FilesOwner.

    Wenn du unter " Group & Files " oben Links, einen Rechtsklick auf SegControl machst, dann "get Info" kannst du unter Base SDK auf 4.1 umstellen, dann sollte mein Beispiel laufen, so glaube ich halt ?
  • Ok, ich probiers heut nach der Arbeit mal aus und geb dir Bescheid ;)

    Das mit dem IBOutlet macht Sinn, aber bei mir hat es jetzt erst funktioniert, nachdem ich ein IBOutlet Segment erstellt, und dieses Segment in der Methode auf das ausgewählte setzen musste. Kann ja heut abend den Code noch mitposten dazu falls es jemanden interessiert.

    mfG
    Champy
  • ramo schrieb:

    Champy schrieb:

    Bei mir steht da unten im Debugger einfach "No Editor" da stimmt was nicht oder?


    Setze doch in meinem Beispiel einmal einen Breakpoint auf die Methode und starte mit Build & Debug !

    Ja und natürlich die " SegmentControls" auch betätigen !

    Champy schrieb:

    da steht einfach (ich habe den Breakpoint in der SegViewController.m gesetzt)
    "There is no SDK with the name "Iphoneos" is wohl irgendwas lokales bei dir.

    Wenn man eine Warnung an einer Stelle in der Methode bekommt, kann man dann davon ausgehen, dass sie ausgeführt wird?

    mfG Champy



    Wenn das mit dem Debugger nicht so richtig klappt, dann mach es dir doch einfach
    und gebe in der Methode, die aufgerufen werden soll, wenn du den SegmenControl betätigtst, etwas mit NSlog() auf der Konsole aus.
    So siehst du auch, ob er in der Methode landet oder nicht.


  • Wenn das mit dem Debugger nicht so richtig klappt, dann mach es dir doch einfach
    und gebe in der Methode, die aufgerufen werden soll, wenn du den SegmenControl betätigtst, etwas mit NSlog() auf der Konsole aus.
    So siehst du auch, ob er in der Methode landet oder nicht.


    Das ist eine gute Idee, so mach ichs auch in jeder anderen Programmiersprache (Ausgabe auf Bildschirm) auch, nur in Objective C wusste ich nicht wie ich es da machen soll.

    Mit dem Beispiel Programm hab ich jetzt noch nicht nachgesehen, sorry.