UIStepper merkt sich Einstellung nicht.

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

  • UIStepper merkt sich Einstellung nicht.

    Hallo

    Ich wollte einfach mal so einen Stepper bei mir einfügen.
    Das Problem ist nur das wenn ich Controller aufrufe, der UIStepper immer wieder auf 0 steht.
    Die gewählte Einstellung merkt er sich nicht.
    So sieht das bei mir im Code aus:

    Quellcode: Settingscontroller.h

    1. @interface SettingsController : UIViewController<SelectRomDelegate,SelectEffectDelegate, SelectHardwareDelegate> {
    2. IBOutlet UIStepper *Frames;
    3. }
    4. - (IBAction)Frames:(id)sender;



    C-Quellcode: SettingsController.m

    1. - (void)viewDidLoad {
    2. [super viewDidLoad];
    3. //self->Frames.value = 0;
    4. }
    5. - (IBAction)Frames:(id)sender; {
    6. Frameslabel.text = [NSString stringWithFormat:@"%1.0f Frames",Frames.value];
    Verknüpft ist der Stepper bei "Sent Events" mit "Value Changed - File's Owner "Frames:"
    und in "Referencing Outlets" Frames mit File's Owner

    Fehlt da noch irgendetwas? ?(
    Normal sollte es doch so funktionieren.

    Was mache ich falsch?

    Gruß Markus
  • Wenn der Wert über den Lebenszyklus des ViewControllers hinaus persistent sein soll, musst Du ihn natürlich speichern bzw. wieder auslesen. NSUserDefaults könnten dafür ein Weg sein.

    Ansonsten - wenn die VC-Instanz eigentlich noch die selbe sein sollte - reicht es, den Wert als Property des VCs zu führen. Dagegen spricht aber das Setzen in viewDidLoad.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • So. Es funktioniert. 8o
    Allerdings habe ich erneut fast das selbe Problem.
    Ich habe passend dazu ein UILabel erstellt das den Wert anzeigen soll, was es auch macht.
    Jedoch stellt sich jetzt beim erneuten Aufruf des Controllers der Wert vom UILabel automatisch wieder auf null obwohl der Wert vom Stepper z.B. 5 beträgt.
    Das UILabel übernimmt also den eingestellten Wert nicht.
    Bei mir sieht das ganze jetzt so aus:

    C-Quellcode: Settingscontroller.m

    1. - (void)viewDidLoad {
    2. [super viewDidLoad];
    3. self->Frames.wraps = NO; self->Frames.autorepeat = NO;
    4. NSUInteger value = self->Frames.value; self->Frameslabel.text = [NSString stringWithFormat:@"%0d Frames", value];
    5. self->Frames.maximumValue = 10;
    6. }

    C-Quellcode: Settingscontroller.h

    1. @interface SettingsController : UIViewController<SelectRomDelegate,SelectEffectDelegate, SelectHardwareDelegate> {
    2. IBOutlet UIStepper *Frames;
    3. IBOutlet UILabel *Frameslabel;
    4. }
    Verknüpft ist das Label nur in "Referencing Outlets" Frameslabel mit File's Owner

    Was muss ich hier noch ändern? ?(
  • Und wo setzt Du "Frames.value"...?

    BTW, folge doch bitte @macmoonshines Rat und gewöhne Dir direkt die Konventionen bzgl. Methoden- und Klassennamen an ... Zeilenumbrüche kosten auch nichts.

    Glaube mir, Du willst gerne leicht lesbaren Code haben, für Dich selber und andere (z. B. hier im Forum), diese Konventionen helfen dabei.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.