1

私がやりたいこと:

  • ユーザーは 10 を入力しUITextField、 をタップしUIButtonます。
  • UILabel10 と表示され、UITextField空白になります。
  • ユーザーは 5 を入力しUITextField、 をタップしUIButtonます。
  • UILable15 と表示され、UITextField再び空白になります。

次のコードを使用すると、入力した数値が保存されてラベルに表示されますが、最初に入力した数値だけでなく、合計を追加して表示するように配列に指示するにはどうすればよいですか?

時間

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property (nonatomic, strong) IBOutlet UILabel *label;
@property (nonatomic, strong) IBOutlet UITextField *field;

@property (nonatomic, strong) NSString *dataFilePath;
@property (nonatomic, strong) NSString *docsDir;
@property (nonatomic, strong) NSArray *dirPaths;

@property (nonatomic, strong) NSFileManager *fileMgr;
@property (nonatomic, strong) NSMutableArray *array;

- (IBAction)saveNumber:(id)sender;

@end

メートル

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize label, field, dataFilePath, docsDir, fileMgr, dirPaths, array;

- (void)viewDidLoad
{
    [super viewDidLoad];

    fileMgr = [NSFileManager defaultManager];
    dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    docsDir = [dirPaths objectAtIndex:0];
    dataFilePath = [[NSString alloc]initWithString:[docsDir stringByAppendingPathComponent:@"data.archive"]];

    if ([fileMgr fileExistsAtPath:dataFilePath])
    {
       array = [NSKeyedUnarchiver unarchiveObjectWithFile:dataFilePath];
        self.label.text = [array objectAtIndex:0];
    }
    else 
    {
        array = [[NSMutableArray alloc] init];
    }

}


- (IBAction)saveNumber:(id)sender
{
    [array addObject:self.field.text];
    [NSKeyedArchiver archiveRootObject:array toFile:dataFilePath];
    [field setText:@""];
    [label setText:[array objectAtIndex:0]];
}
4

2 に答える 2

0

配列を反復処理し、すべての値を使用して数値として取得し、[string intValue]それらを別の変数で合計します。次に、 のような書式設定された文字列を使用して、計算された値をラベルに追加します[NSString stringWithFormat: @"%d"]

于 2012-04-19T15:00:42.410 に答える
0

すべての値を繰り返し処理し、現在の合計に追加する必要があります。これを見てください: -

 - (IBAction)saveNumber:(id)sender
{
    [array addObject:self.field.text];
    [NSKeyedArchiver archiveRootObject:array toFile:dataFilePath];
    [field setText:@""];

    // Create an enumerator from the array to easily iterate
    NSEnumerator *e = [array objectEnumerator];

    // Create a running total and temp string
    int total = 0;
    NSString stringNumber;

    // Enumerate through all elements of the array
    while (stringNumber = [e nextObject]) {
        // Add current number to the running total
        total += [stringNumber intValue];
    }

    // Now set the label to the total of all numbers
    [label setText:[NSString stringWithFormat:@"%d",total];
}

読みやすくするためにコードにコメントを付けました。

于 2012-04-19T15:08:04.487 に答える