2013-04-07 3 views
0

Я создал простое приложение, состоящее из 2 UILabels и кнопки, чтобы добавить значение обоих из них вместе. Я использую NSUserdefaults, чтобы сохранить значения меток при выходе из приложения/ударе по кнопке «Назад»/«Приложение» и т. Д. Я вызываю эту функцию сохранения при выборе кнопки, которая добавляет оба значения вместе.Сохраняется только одно значение UILabel

Проблема, с которой я столкнулась, заключается в том, что только 1 из значений UILabel сохраняется, а другой нет. Я пробовал всевозможные настройки, но не могу разобраться.

Вот мой час код файла:

#import <UIKit/UIKit.h> 

int dcounter; 
int dtotaler; 
int enteramount; 

@interface durood : UIViewController { 

    IBOutlet UILabel *dcount; 
    IBOutlet UILabel *dtotal; 
    IBOutlet UITextField *numberTextField; 

} 

-(IBAction)addtotal1; 

Вот код из моего м файла:

-(IBAction)addtotal1;{ 

    float x = ([dcount.text floatValue]); 
    float y = ([dtotal.text floatValue]); 
    [dtotal setText:[NSString stringWithFormat:@"%g", x + y]]; 
    dcounter=0; 
    dcount.text = [NSString stringWithFormat:@"%i",dcounter]; 
    NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults]; 
    [userDefaults setObject:[NSString stringWithFormat:@"%i",dtotaler] forKey:@"saveDtotal"]; 
    [userDefaults setObject:[NSString stringWithFormat:@"%d",dcounter] forKey:@"saveDcount"]; 
    [userDefaults synchronize]; 

-(void)saveDcount 
{ 
    NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults]; 
    [userDefaults setObject:[NSString stringWithFormat:@"%d",dcounter] forKey:@"saveDcount"]; 
    [userDefaults setObject:[NSString stringWithFormat:@"%d",dtotaler] forKey:@"saveDtotal"]; 
    [userDefaults synchronize]; 

} 

- (void)viewDidLoad 
{ 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(saveDcount) name:UIApplicationDidEnterBackgroundNotification object:nil]; 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(saveDcount) name:UIApplicationWillTerminateNotification object:nil]; 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(saveDtotal) name:UIApplicationDidEnterBackgroundNotification object:nil]; 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(saveDtotal) name:UIApplicationWillTerminateNotification object:nil]; 



    NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults]; 
    NSString *dcountString= [userDefaults objectForKey:@"saveDcount"]; 
    NSLog(@"Your Dcount: %@",dcount); 
    NSString *dtotalString= [userDefaults objectForKey:@"saveDtotal"]; 
    NSLog(@"Your Dtotal: %@",dtotal); 

    //checking if data in user defaults is not empty 
    if(dcountString.length>0) 
    { 
     dcounter=[dcountString intValue]; 
     dcount.text = [NSString stringWithFormat:@"%d",dcounter]; 

    } 
    else 
    { 
     //for first time 
     dcounter=0; 
     [email protected]"0"; 
    } 

    if(dtotalString.length>0) 
    { 
     dtotaler=[dtotalString intValue]; 
     dtotal.text = [NSString stringWithFormat:@"%d",dtotaler]; 
    } 
    else 
    { 
     //for first time 
     dtotaler=0; 
     [email protected]"0"; 
    } 
} 

UILabel/строка, которая не сохраняется в 'dtotal'.

Любая помощь была бы принята с благодарностью. Благодарю.

+1

где ваш метод 'saveDtotal'? и вы получите ошибку компиляции, если ваш .h-файл включен более чем одним файлом .m. вам нужно сделать 'int dcounter;' to 'extern int dcounter; 'и тому подобное. или вы должны переместить затем в .m файл –

+0

Я не вставлял весь мой m-файл, -void saveDcount содержит код для сохранения Dtotal также – Mustafa

+0

Используйте отладчик или добавьте инструкции NSLog, чтобы распечатать все переменные, которые вы устанавливаете в 'addTotal1 '. Все эти значения отражают то, что вы ожидаете? –

ответ

0

Я нашел решение.

-(IBAction)addtotal1;{ 

float x = ([dcount.text floatValue]); 
float y = ([dtotal.text floatValue]); 
dtotaler = x + y; 
dtotal.text = [NSString stringWithFormat:@"%d",dtotaler]; 
dcounter=0; 
dcount.text = [NSString stringWithFormat:@"%i",dcounter]; 
NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults]; 
[userDefaults setObject:[NSString stringWithFormat:@"%d",dtotaler] forKey:@"saveDtotal"]; 
[userDefaults setObject:[NSString stringWithFormat:@"%d",dcounter] forKey:@"saveDcount"]; 
[userDefaults synchronize]; 

Спасибо за вход каждого.

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