我将UITextField
设置为UITableViewCell
。根据数组计数加载UITableView
。所有文本字段都是可编辑的。但是,我想要,当我编辑UITextField
时,UITextField
数据应该存储到预定义的NSString
中。对于每个IndexPath.row,textfield是不同的字符串。
附加我用于生成NSMutableArray
...
[arrProfile removeAllObjects];
arrProfile = [[NSMutableArray alloc] initWithObjects:
@{@"title": @"CUSTOMER NAME", @"details": strFName},
@{@"title": @"EMAIL ID", @"details": strEmail},
@{@"title": @"MOBILE NO.", @"details": strContact},
@{@"title": @"STATE", @"details": strStateName},
@{@"title": @"CITY", @"details": @""},
nil];
[_tblProfile reloadData];
现在附上cellForRowAtIndexPath ...
中使用的代码static NSString *cellIdentifier = @"cellProfile";
NSDictionary *dictProfile = [arrProfile objectAtIndex:indexPath.row];
ProfileTableViewCell *cell = (ProfileTableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
cell.lblTitle.text = [dictProfile objectForKey:@"title"];
cell.txtDetails.text = [dictProfile objectForKey:@"details"];
cell.txtDetails.delegate = self;
[self textFieldShouldReturn:cell.txtDetails];
[self textFieldShouldBeginEditing:cell.txtDetails];
return cell;
答案 0 :(得分:1)
如果我正确理解您的问题,您需要构建一个动态表单,其中许多文本字段将根据您提供的数组而有所不同。您正试图通过获取表视图并按每行加载所有文本字段来实现此目的。现在问题出现了如何获取在每个文本字段中输入的值。如果这是你的问题,那么该怎么做呢。
您可以使用标记为文本字段来执行此操作。您听到它正确!在tableview单元格方法中为每个文本字段赋予唯一标记(您可以使用indexpath.row)。在这里分配代表。将触发Textfield委托方法。现在从textfield委托方法再次基于标记获取文本字段中的输入作为字符串和存储。
注意:强>
[self textFieldShouldReturn:cell.txtDetails];
[self textFieldShouldBeginEditing:cell.txtDetails];
不需要从tableview cellForRowAtIndexPath调用的方法。如果您指定了Textfield委托,它将负责处理。
答案 1 :(得分:0)
选项1:
这适合您的实施
在创建单元格行(peer chaincode invoke -n mycc -c '{"Args":["set", "a", "20"]}' -C myc
)时将单元格索引分配给txtDetails.tag
。
这有助于您识别文本字段行
cellForRowAtIndexPath
实施UITextField委托txtDetails.tag = indexPath.row
或textFieldDidEndEditing
至
行索引
arrProfile [textField.tag] =“新值”
选项2:
定义协议以获取单元格文本更新
shouldChangeCharactersIn
在你的cellForRowAtIndexPath中执行以下操作
protocol MYCellDelegate: class {
textFieldDidChange(row: Int, string: String)
}
class MyCell: UITableViewCell {
weak var delegate: MYCellDelegate?
var row: Int
}
在单元格(cell.delegate = self
cell.row = indexPath.row
或textFieldDidEndEditing
)中实施UITextFieldDelegate
并使用适当的值
调用shouldChangeCharactersIn
不要忘记从textFieldDidChange(row: Int, string: String)
cellForRowAtIndexPath
答案 2 :(得分:0)
cell.txtDetails.delegate = self;
cell.txtDetails.tag = indexPath.row;
[cell.txtDetails addTarget:self action:@selector(textFieldDidEndEditing:) forControlEvents:UIControlEventTouchUpInside];
-(void)textFieldDidEndEditing:(UITextField *)textField {
if (textField.tag == 0) {
strFName = textField.text;
} else if (textField.tag == 2) {
strContact = textField.text;
}
[self loadTheMainArray];
}
答案 3 :(得分:0)
1.您可以尝试使用块函数添加到单元格,但现在遵循代码块:
cell.m_textChangeBlock = ^(NSString *text) {
if(indexPath.row){
weakSelf.m_models[indexPath.section].rtext = text;
}else{
weakSelf.m_models[indexPath.section].ltext = text;
}
};