使用文本字段另存为功能

时间:2013-12-06 23:57:45

标签: ios objective-c arrays uitableview uitextfield

在我的应用程序中,有不同视图中的文本字段,它们都是一个数组的一部分,但有几个数组具有不同的文本字段值。例如,在第一个文本字段中可能有2个,在一个数组中可能有第二个中的5个,但在第一个文本字段中可能有6个,而在另一个数组中第二个中有4个。当您单击saveAs按钮时,它将转到NameSaveAsView,其中有另一个文本字段。此文本字段将为该数组指定名称,以便在进入OpenShiftView时,您可以在tableview单元格中看到每个名称,并可以加载所需的数组。这是我到目前为止所获得的代码,我认为应该可以工作但是无论何时我测试它都可以正常工作,除了OpenShiftView加载空单元格。我的代码出了什么问题?谢谢你的帮助。

//
//  NameSaveAsViewController.m
//  ShiftCalculator
//
//  Created by John on 21/11/2013.
//  Copyright (c) 2013 John. All rights reserved.
//

#import "NameSaveAsViewController.h"

@implementation NameSaveAsViewController
@synthesize saveAsText, normalWage, overtimeWage, mondayNormalTime, mondayOverTime,   
tuesdayNormalTime, tuesdayOverTime, wednesdayNormalTime, wednesdayOverTime, 
thursdayNormalTime, thursdayOverTime, fridayNormalTime, fridayOverTime,   
saturdayNormalTime, saturdayOverTime, sundayNormalTime, sundayOverTime, bonusMoney,  
tArray, string5, mArray;


-(void)viewDidLoad {

[super viewDidLoad];

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self   
action:@selector(dismissKeyboard:)];
[self.view addGestureRecognizer:tap];




}

- (void)dismissKeyboard:(id)sender
{
if ([saveAsText isEditing]) {
    [saveAsText resignFirstResponder];
}
}

- (void)textFieldDidEndEditing:(UITextField *)textField {
saveAsText.placeholder = @"Shift Name";
NSString *string5 = saveAsText.text;

}

- (void)saveAs:(id)sender
{
[mArray addObject:string5];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:mArray forKey:@"saveArray"];

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[defaults setObject:strings forKey:@"saveArray2"];
 }
 @end

//
//  OpenShiftViewController.m
//  ShiftCalculator
//
//  Created by John on 21/11/2013.
//  Copyright (c) 2013 John. All rights reserved.
//

#import "OpenShiftViewController.h"


@implementation OpenShiftViewController
@synthesize textFields, arr, myMutableArray, myDictionary, defaults;

- (void)viewDidLoad
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
myDictionary = [defaults dictionaryRepresentation];
self.arr = [defaults arrayForKey:@"saveArray"];

}

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{

return 1;
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return arr.count;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath    
*)indexPath
{

static NSString *CellIdentifier = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell) {
    cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle    
reuseIdentifier:CellIdentifier];

}

cell.textLabel.text = [arr objectAtIndex:indexPath.row];


return cell;
}
@end

1 个答案:

答案 0 :(得分:0)

您需要弄清楚局部变量的概念。您在viewDidLoad中定义的'arr'和textFieldDidEndEditing中的'mArray'仅存在于这些方法中。您似乎有其他变量与实例变量具有相同的名称,但这些变量并不相同。

这些问题几乎肯定是你所看到的症状的原因。尝试使用实例变量而不是创建本地变量。