我正在开发一款应用,用户可以在其中估算各种长度和宽度尺寸(面积),以便更好地确定所需数量。
我正在努力解决一些问题,但会一次解决一个...
我希望用户添加尽可能多的字段,以输入他们需要计算的所需区域...为此,我正在使用 UITableView 和可重复使用的单元格...我已经编码以允许用户添加一个新行(或他们喜欢的任意多行)。目前,该应用从 3 行开始,但如果他们想添加更多,他们可以。
这样“部分”就可以工作了……用户可以随意添加和删除行,但是,如果用户在应用程序中添加 3 或 4 行,然后关闭应用程序,返回时应用程序只会显示默认行数。
我的问题是......应用程序如何“记住”那些额外的行......所以下次用户进入应用程序时,新的行数总是显示而不是我的默认行数。我目前不是在询问如何保存行内的数据或信息,只是询问如何保存新的行数以供日后使用...
我有一些屏幕截图供引用...
您可以看到我从默认的 3 行开始,并允许用户添加更多...确实有效...但是,当我关闭应用程序时,默认的 3 行再次显示,忘记了添加的行用户...非常感谢任何帮助...
更新
所以现在我根据下面发布的建议有了以下附加代码...
在 Controller 中
- (UITableViewCell *) tableView:(UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
SodTableCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if(cell == nil){
cell = [[SodTableCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
}
//if number of rows is greater than the total number of rows in the data set
//and this view is in editing mode.
//Initialize the cell for "Add Row"
//there will be an extra row once SetEditing: is called
if(indexPath.row >= tabledata.count && [self isEditing]){
cell.areaNumber.text = @"";
NSUserDefaults *area = [NSUserDefaults standardUserDefaults];
[area setObject:self.area_Input forKey:@"sod_area_input_by_user"];
[area synchronize];
NSLog(@"%@",[area valueForKey:@"sod_area_input_by_user"]);
}else{ // this tableview is showing table (not in edit mode)
/*cell.areaNumber.text = [tabledata objectAtIndex:indexPath.row];*/
cell.areaNumber.text = tabledata[indexPath.row];
// Configure the cell...
UILabel*label = [[UILabel alloc] initWithFrame:CGRectMake(self.view.bounds.size.width/2.5, 0, self.view.bounds.size.width, 44)];
NSString*text = [NSString stringWithFormat:@"Area %ld",(long)indexPath.row+1];
[label setText:text];
[label setTextColor: [UIColor colorWithRed:0.41 green:0.33 blue:0.25 alpha:1.0]];
label.font = [UIFont fontWithName:@"HelveticaNeue-Thin" size:14.0f];
[cell.contentView addSubview: label];
}
return cell;
其中 area_Input 是一个 NSString...
然后我尝试在 viewDidLoad 中显示结果
tabledata = [[NSMutableArray alloc] initWithObjects:self.area_Input, nil];
但是在查看 NSLog 时它显示为 nil...有什么想法吗?
最佳答案
您可以将这些单元格信息保存在 NSUserDefaults
中,然后在您的 viewWillAppear
中检索这些单元格并将它们保存到您用来加载单元格的数组中。
关于ios - 当用户向 UITableView 添加行时,返回应用程序时新行不是 "stay",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47103185/