我正在尝试从UITextField保存某些值但是,我无法做到这一点,因为每当我滚动时,UITextField中什么都没有。我正在使用自定义单元格。我知道自定义单元格必须在特定视图中加载,因此我使用textFieldDidEndEditing将值存储在数组中。但是,我收到以下错误消息: *由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'* - [__ NSArrayM insertObject:atIndex:]:object不能为nil'
非常感谢帮助!!我的代码如下,我在IOS开发中很新。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 0) {
if (indexPath.row == 7) {
static NSString *CellIdentifier = @"RevButtonCell";
RevButtonCell *cell = (RevButtonCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"RevButtonCell" owner:self options:nil];
cell = [topLevelObjects objectAtIndex:0];
[cell.revsaveB addTarget:self action:@selector(revaddparse:) forControlEvents:UIControlEventTouchUpInside];
cell.reveditdeleteB.hidden = YES;
cell.reveditsaveB.hidden = YES;
cell.revsaveB.hidden = NO;
cell.revdeleteB.hidden = NO;
}
return cell;
} else {
static NSString *CellIdentifier = @"TextCell";
TextCell *cell = (TextCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"TextCell" owner:self options:nil];
cell = [topLevelObjects objectAtIndex:0];
}
cell.detaillabel.text = [revdetailsA objectAtIndex:indexPath.row];
cell.detailtext.placeholder = @"Enter Text";
cell.detailtext.tag = indexPath.row;
cell.detailtext.delegate = self;
if (indexPath.row == 0) {
cell.detailtext.text = dateS;
}
if (indexPath.row == 1) {
cell.detailtext.text = clientS;
}
if (indexPath.row == 2) {
cell.detailtext.text = productS;
}
if (indexPath.row == 3) {
cell.detailtext.text = amountS;
}
if (indexPath.row == 4) {
cell.detailtext.text = qtyS;
}
if (indexPath.row == 5) {
cell.detailtext.text = taxS;
}
if (indexPath.row == 6) {
cell.detailtext.text = totalS;
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}
}
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
[client insertObject:clientS atIndex:0];
[product insertObject:productS atIndex:0];
[date insertObject:dateS atIndex:0];
[amount insertObject:amountS atIndex:0];
[qty insertObject:qtyS atIndex:0];
[tax insertObject:taxS atIndex:0];
[total insertObject:totalS atIndex:0];
}
答案 0 :(得分:0)
将空字符串的值初始化为
clientS = @"";
productS = @"";
dateS = @"";
amountS = @"";
qtyS = @"";
taxS = @"";
totalS = @"";
答案 1 :(得分:0)
只需使用每个CellIdentifier,使用CellIdentifier
就像下面的那样
并且在使用此代码之后,不需要在其中创建数组和插入对象,所以不要创建数组只需使用此代码..
NSString *CellIdentifier = [NSString stringWithFormat:@"Cell%d%d",indexPath.section,indexPath.row];
使用像“TextCell”和“ButtonCell”这样的另一个CellIndentifier
我希望这可以帮助你...
:)
答案 2 :(得分:0)
从您的代码看起来就像您尝试在表视图中实现静态单元格一样。您可能需要考虑的是使用故事板并创建仅使用Interface Builder支持静态表单元格的表视图。这将允许您消除整个cellForRowAtIndexPath:
方法。如果你不能使用故事板,那么你必须按照你的方式管理你的单元格,但在我的书中,你可以随时删除代码。
如果你打算使用故事板,你应该知道几件事:
有一些关于使用静态单元格的表视图的教程。它们可能有点长,但是,坚持使用它们,你应该能够产生你正在寻找的结果。
最好的问候。