如何获取Dynamic tableview单元格数据。 我有这样的表格视图。所有单元格都是动态创建的。 我想在按下提交按钮时获取所有文本(flavor和%)数据。 问题是我动态创建文本。所以我无法单独识别文本框。如何从动态文本框中获取数据?
答案 0 :(得分:1)
您可以将tag
设置为textfield
,然后您可以通过该标记访问它们。
例如,
UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, 200, 30)];
textField.tag = 100; //set tag
UITextField *textField1 = (UITextField*)[self.view viewWithTag:100]; //retreive by tag
因此,您可以管理动态制作的textfields
。
更新:
然后分别设置两个标签100和101。现在你必须先获得单元格,然后从那个单元格中你可以得到你的textfields
所以按钮点击首先得到所有单元格,然后你可以从那个单元格得到textfield
,如:
UITextField *textField = (UITextField*)[cell viewWithTag:100];
所以,你必须先按下按钮的单元格。
答案 1 :(得分:1)
将标记设置为自定义单元格中的uitextfield
For eg.
cell.lblFlavour.tag = indexPath.row;
cell.lblPercent.tag = indexPath.row;
现在,根据indexPath访问您的uitextfield
答案 2 :(得分:1)
使用tag
属性唯一标识每个UI
组件。在为每行创建tag
和textFields
后,将相同的button
属性分配给下一行,然后使用代码获取tag
值。
设置tag
:
self.yourTextfield.tag = 100;
self.yourbutton.tag = 100;
// set action method to uibutton
[cell.yourButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
使用UI
属性获取tag
组件:
-(IBAction)buttonPressed:(id)sender{
// here get all ui component using tag
UIButton *button = (UIButton *)sender;
NSLog(@"%d", [button tag]);
}
或者您可以使用方法didSelectRowAtIndexPath
来获取值,请参阅代码:
- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
NSLog(@"getting index path %@",indexPath);
NSLog(@"getting index path %@",cell.yourTextField.text);
}
答案 3 :(得分:0)
UITableView
的主要思想是将数据存储到数据源,而不是存储到单元格。当你点击" +"按钮在导航栏上,您应该将新项目添加到数组中,然后调用[tableView reloadData]
。所以UITableView
只代表数组中的数据。当按下提交按钮时,您只需枚举一个数据源数组并从每一行获取所有文本。
当您在单元格内的文本字段中点按文本时,可以使用delegates
或blocks
将数据存储到数组中。
答案 4 :(得分:0)
尝试以下代码:
点击提交按钮
for (int i=0; i < [[tableView visibleCells] count]; i++)
{
//yourArrayname is the number of rows in the UITableView /Or UITableView visible cells
NSIndexPath *indexPath = [NSIndexPath indexPathForRow: i inSection: 0];
CustomTableViewCell *cell = [tblExperience cellForRowAtIndexPath:indexPath];
for (UIView *view in cell.contentView.subviews){
if ([view isKindOfClass:[UITextField class]]){
UITextField* CurrentTextField = (UITextField *)view;
NSLog(@"val %d %@",i,CurrentTextField.text);
[finalArray addObject:CurrentTextField.text];
}
}
}
答案 5 :(得分:0)
为文本字段分配动态标记,实现文本字段委托,并在文本字段结束编辑时将数据保存在数组中。像这样的东西
-(void)textFieldDidEndEditing:(UITextField *)textField {
[_array insertObject:textField.text atIndex:textField.tag];
}