在我的应用程序中,有不同视图中的文本字段,它们都是一个数组的一部分,但有几个数组具有不同的文本字段值。例如,在第一个文本字段中可能有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
答案 0 :(得分:0)
您需要弄清楚局部变量的概念。您在viewDidLoad中定义的'arr'和textFieldDidEndEditing中的'mArray'仅存在于这些方法中。您似乎有其他变量与实例变量具有相同的名称,但这些变量并不相同。
这些问题几乎肯定是你所看到的症状的原因。尝试使用实例变量而不是创建本地变量。