2010-12-09 2 views
0

Hallo sorry über solch eine dumme Frage Ich verändere einen Variablenwert abhängig vom Index eines segmentierten Steuerelements, möchte aber diese Variable in einer nachfolgenden Berechnung verwenden; bin sicher, dass dies etwas mit dem variablen Scoping zu tun hat?Wirklich wirklich grundlegende Obj-C Frage über die Übergabe von Instanzvariablen

- (IBAction)calculate:(UIButton *)button { 
if([sSeg selectedSegmentIndex]==1){ 
    float s=0.5; 
    NSLog(@"s=%f", s); 
} 
else if ([sSeg selectedSegmentIndex]==0) 
{ 
    float s=1; 
    NSLog(@"s=%f", s); 
} 
NSLog(@”s now = %f”, s); 

}

Hilfe sehr geschätzt!

+0

Deklarieren Sie einfach Ihre Float-Variable in Ihrer Interface-Datei zwischen den geschweiften Klammern wie float s; und in Ihrer IBAction-Methode (und anderswo) können Sie direkt darauf zugreifen. – Rog

Antwort

4
- (IBAction)calculate:(UIButton *)button { 
    float s = 0; 
    if([sSeg selectedSegmentIndex]==1){ 
     s=0.5; 
     NSLog(@"s=%f", s); 
    } 
    else if ([sSeg selectedSegmentIndex]==0) 
    { 
     s=1; 
     NSLog(@"s=%f", s); 
    } 
    NSLog(@”s now = %f”, s); 

}

Ja, seine der Umfang - eine Variable in Ihrem geschweiften Klammern nur sichtbar.

0
- (IBAction)calculate:(UIButton *)button { 
    float s; 
    if([sSeg selectedSegmentIndex]==1){ 
     s=0.5; 
     NSLog(@"s=%f", s); 
    } 
    else if ([sSeg selectedSegmentIndex]==0) 
    { 
     s=1; 
     NSLog(@"s=%f", s); 
    } 
    NSLog(@”s now = %f”, s); 
} 
+0

Ja das habe ich mir gedacht. Ich habe versucht, float s außerhalb der if-Anweisung zu deklarieren (wie in der Antwort oben), aber es ist immer noch nicht zugänglich unter der if-Anweisung. Und wenn ich eine lokale Deklaration von s erhalte, blendet die Instanz variable Warnungen aus. – zed111

+0

Und wenn ich float s = 1 außerhalb der Funktion deklariere (aber in Aktion) bekomme ich von log s = 1, s = 0.5 s = 1 – zed111

+0

Hmm Ich habe versucht, den Schwimmer überall zu deklarieren! Das sollte funktionieren?! Zeit für eine Tasse Tee :(... – zed111