在iphone中单击按钮时,如何将文本字段/标签中的值添加到数组中

时间:2012-05-07 04:47:20

标签: ios xcode ipad nsmutablearray nsarray

我有一个文本字段,用户可以输入1-10的值

在文本字段的底部,我有按钮。

当用户点击完成按钮

时,我需要将文本字段中的值添加到数组中

为此我写了这样的代码。

- (void)viewDidLoad
{
    [super viewDidLoad];
    PainlevelsArray = [[NSMutableArray alloc] init]; //PainlevelsArray declared in .h

}


-(IBAction)doneClick:(id)sender
{
    [PainlevelsArray addObject:txtField.text ];

    // [PainlevelsArray insertObject:rateLabel.text atIndex:0 ];
    NSLog(@"PainlevelsArray *** %@",PainlevelsArray);

   [self.navigationController popToRootViewControllerAnimated:YES];

}

但每次数组只显示按钮点击时最近添加的一个值,如此

控制台上的输出

========================

2012-05-07 10:11:15.689 ESPT[796:10d03] PainlevelsArray *** (
    2
)
2012-05-07 10:11:27.984 ESPT[796:10d03] PainlevelsArray *** (
    4
)

My array gets empty every time view loads, and adde a fresh entry when button clicks 的 但我需要这样的

2012-05-07 10:11:27.984 ESPT[796:10d03] PainlevelsArray *** (
        4,
        5,
        2,
        6,
        8,
    )

所有输入的线索都是adde /插入现有阵列。

提前致谢

在ExerciseStartViewController中

-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
 ExerciseResult *result = [[ExerciseResult alloc] init];
            [self.navigationController pushViewController:result animated:YES];
            [result release];
    }
当前/ ExerciseResult视图控制器中的

- (void)viewDidLoad
{
    [super viewDidLoad];
    PainlevelsArray = [[NSMutableArray alloc] init]; //PainlevelsArray declared in .h

}


-(IBAction)doneClick:(id)sender
{
    [PainlevelsArray addObject:txtField.text ];

    // [PainlevelsArray insertObject:rateLabel.text atIndex:0 ];
    NSLog(@"PainlevelsArray *** %@",PainlevelsArray);

   [self.navigationController popToRootViewControllerAnimated:YES];

}

6 个答案:

答案 0 :(得分:4)

您需要使用全局数组。

最好的解决方案是在AppDelegate.h文件中声明一个数组,并在applicationdidfinishlaunch方法中使用alloc-init这个数组。

AppDelegate *app =  (AppDelegate*)[[UIApplication sharedApplication] delegate];
[app.arrMutable addObject:textField.text ]; 

使用UserDefaults :这些用于以键值格式保存您的应用程序数据。存储为userdefaults的值/对象始终保留在应用程序中,直到您没有从沙箱中删除它为止。您可以使用以下代码在userdefaults中存储数组。

[[NSUserDefaults standardUserDefaults] setObject:app.arrMutable forKey:@"Global_Array_Key"];

在AppDelegae applicationDidFinishLuanch方法中,您可以使用以下方法从userdefaults中检索此数组:

self.arrMutable = [[NSMutableArray alloc]initWithArray:[[NSUserDefaults standardUserDefaults]objectForKey:@"Global_Array_Key"]];

答案 1 :(得分:1)

你需要全局声明和初始化PainlevelsArray,即在AppDelegate或单独的共享实例类中,其中内存已被分配一次,即使你访问所述类的任何时间都不会过度写入其数据,所以它会不断地将新值插入到数组中,您将获得所需的结果。

答案 2 :(得分:1)

ExerciseResult *result = [[ExerciseResult alloc] init];
[self.navigationController pushViewController:result animated:YES];
[result release];

我认为您可能会在此行动中尝试这种类型的代码来进入此视图。而不是这个你必须休闲作为全球ExerciseResult *结果

in .h

ExerciseResult *result;

in .m

in viewDidLoad

result = [[ExerciseResult alloc] init];

在你的行动方法中你将休闲

[self.navigationController pushViewController:result animated:YES];

你会这样跟着

我希望它会帮助你

答案 3 :(得分:1)

在Delegate.h页面中声明

  @interface AppDelegate : NSObject <UIApplicationDelegate>
  {
       NSMutableArray *commString;
  }
  @property (nonatomic, retain) NSMutableArray *commString;
  @end

Delegate.m页面

  @sythesize commString;

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
          commString = [[NSMutableArray alloc] init];
          // some code.....
 }

在按钮视图中

 -(IBAction)doneClick:(id)sender
{
NSMutableArray *mut=[[NSMutableArray alloc] initWithObjects:txtField.text,nil];
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.commString=mut;

   // some code....
}

声明这个代码,你想要你的数组,你可以很容易地得到你的数组。

   AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
   NSLog(@"commString=%@",appDelegate.commString);

答案 4 :(得分:0)

单击“只需写入添加此行”即可使用此行代码。

[array addobject:textfield.text];

仅使用此功能。

[PainlevelsArray addObject:txtField.text]

答案 5 :(得分:0)

在这种情况下,您应该使用数组属性。

@property (nonatomic, strong) NSMutableArray *painlevelsArray;

初始化数组

NSMutableArray *array = [[NSMutableArray alloc] init];
self.painlevelsArray = array;

然后在每个按钮单击

后将字符串添加到数组中
[self.painlevelsArray addObject:[NSString stringWithFormat:@"%@",self.textField.text]];