2013-10-24 6 views
0

Пытается установить значение int, используя сегментированный контроллер. Я видел несколько ссылок на изменение меток, но мне нужно установить значение int.Сегментированные контроллеры

#import "SecondViewController.h" 

@interface SecondViewController() 

@end 

@implementation SecondViewController 

@synthesize caseCost; 
@synthesize dilution; 
@synthesize returnMsg; 
@synthesize opcValue; 
//synthesize opc; < -- Tried 
//int opc; <--- tried 



- (IBAction)opcView:(id)sender { 
    if (opcValue.selectedSegmentIndex == 0) { 
    int opc = 320; 
    } 
    if (opcValue.selectedSegmentIndex == 1) { 
    int opc = 128; 
    } 
    if (opcValue.selectedSegmentIndex == 2) { 
    int opc = 135; 
    } 
    if (opcValue.selectedSegmentIndex == 3) { 
    int opc = 88; 
    } 


} 


- (void)viewDidLoad 
    { 
    [super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 
     //int opc; <--- tried 
    } 

- (void)didReceiveMemoryWarning 
    { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
     } 



    - (IBAction)finishBtn:(id)sender { 
    //int opc = 320; 
    float case_cost = ([caseCost.text floatValue]); 
    float dilutionValue = ([dilution.text floatValue]); 
    float gpc = (opc/dilutionValue); 
    float gCost = (case_cost/gpc); 
    float bCost = (gCost/4); 
    float bpc = (gpc * 4); 

NSNumberFormatter *formatterCur = [[NSNumberFormatter alloc] init]; 
NSNumberFormatter *formatterInt = [[NSNumberFormatter alloc] init]; 
[formatterCur setNumberStyle:NSNumberFormatterCurrencyStyle]; 
[formatterInt setNumberStyle:NSNumberFormatterDecimalStyle]; 

NSString *bottlesCost = [formatterCur stringFromNumber:[NSNumber numberWithFloat:bCost]]; 
NSString *gallons = [formatterInt stringFromNumber:[NSNumber numberWithInt:gpc]]; 
NSString *gallonsCost = [formatterCur stringFromNumber:[NSNumber numberWithFloat:gCost]]; 
NSString *bottles = [formatterInt stringFromNumber:[NSNumber numberWithInt:bpc]]; 


returnMsg.text = [NSString stringWithFormat:@"%@ gallons per case at %@ per gallon and %@  - 32 oz bottles at %@ per bottle.", gallons, gallonsCost, bottles, bottlesCost]; 


} 

    - (IBAction)opcView:(id)sender { 
    } 

    @end 

в строке "float gpc = (opc/dilutionValue);" отображается как неизвестное значение opc, хотя я думаю, что это должно быть от сегментированного контроллера. Я использую сегментированный контроллер вместо кнопок Radio, которые я использовал в Java. Я использовал «// int opc = 320», чтобы убедиться, что остальная часть кода работает.

ответ

1

В каждом из if блоков в вашем методе - (IBAction)opcView:(id)sender вы создаете локальную переменную с именем intopc. Поэтому, когда выполнение оставляет блок if, локальная переменная исчезает. Таким образом, в - (IBAction)finishBtn:(id)sender в области нет переменной с именем opc.

Вы также должны объявить opc. Вы установите это свойство, когда управление сегментом изменит выбор. Позже вы можете прочитать значение свойства в обработчике кнопки завершения.

#import "SecondViewController.h" 

@interface SecondViewController() 
@property (nonatomic) int opc; 
@end 


@implementation SecondViewController 

// this method is wired to the segment control's UIControlEventValueChanged event 
- (IBAction)opcView:(id)sender 
{ 
    if (opcValue.selectedSegmentIndex == 0) { 
    self.opc = 320; 
    } 
    if (opcValue.selectedSegmentIndex == 1) { 
    self.opc = 128; 
    } 
    if (opcValue.selectedSegmentIndex == 2) { 
    self.opc = 135; 
    } 
    if (opcValue.selectedSegmentIndex == 3) { 
    self.opc = 88; 
    } 
} 

- (IBAction)finishBtn:(id)sender 
{ 
    float case_cost = ([caseCost.text floatValue]); 
    float dilutionValue = ([dilution.text floatValue]); 
    float gpc = (self.opc/dilutionValue); 

    // lots more code 
} 
+0

Пробовал добавлять «int opc;» под реалиями и под synthasize, все еще не видящий правдивого. Вы также упомянули, что объявили его как собственность. Это сделано в файле .h правильно? Если так, я попробовал, но это тоже не понравилось. Заранее спасибо. @matthew – user2152750

+0

Я пробовал каждую комбинацию, о которой я могу думать, или прочитал, чтобы получить метод ответа (IBAction), чтобы передать значение «opc» методу - (IBAction) finishBtn. Пожалуйста помоги. Я не могу поверить, что трудно позволить методам использовать переменную. Я думаю, что Java любит делиться, а iOS - нет. – user2152750

+0

Я добавил @property (nonatomic) int opc; в файл .h. – user2152750

Смежные вопросы