我创建了iOS新应用。 UITextField
的每一行都添加了UITableView
。第一行UITextField
输入值,然后在第二行UITextField
中显示第一行UITextField
值中添加新行。如何解决这个问题。请帮我 。提前谢谢。
以下是我的示例代码添加行功能
- (IBAction)btnAddRow:(id)sender {
[self loadData:[self.dataArray count]];
[self.tblview reloadData];
}
-(void ) loadData:(NSInteger) Indexvalue
{
newSheet = [NSDictionary dictionaryWithObjectsAndKeys:strEntryID,entryID, nil];
[self.dataArray insertObject:newSheet atIndex:Indexvalue];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
UITextField *txtComment = [[UITextField alloc] initWithFrame:CGRectMake(225.0f,5.0f,50.0f,20.0f)];
[txtComment setBorderStyle:UITextBorderStyleLine];
[cell addSubview:txtComment];
[txtComment setTag:indexPath.row];
[txtComment addTarget:self action:@selector(txtCommentChange:) forControlEvents:UIControlEventEditingChanged];
return cell;
}
答案 0 :(得分:0)
txtComment.text = yourText
你错过了
答案 1 :(得分:0)
每次调用cellForRowAtIndexPath时,都会添加一个新的UITextField。滚动时会重复使用单元格,因此想象当一个单元格离开屏幕顶部时,它会快速拍摄并放在屏幕底部,成为正在出现的新单元格。这也意味着如果您第一次添加文本字段,那么第二个将添加第一个文本字段。
如果在初始化单元格的同一if语句中添加UITextField,则会阻止出现多个文本字段。例如:
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
UITextField *txtComment = [[UITextField alloc] initWithFrame:CGRectMake(225.0f,5.0f,50.0f,20.0f)];
[txtComment setBorderStyle:UITextBorderStyleLine];
[cell addSubview:txtComment];
[txtComment setTag:indexPath.row];
[txtComment addTarget:self action:@selector(txtCommentChange:) forControlEvents:UIControlEventEditingChanged];
}
Theres也是一种可以使用的方法,当一个单元格即将被回收时调用:-prepareForReuse。这在UITableViewCell本身上调用,因此您需要UITableViewCell的子类来访问它。
- (void) prepareForReuse {
//set text fields to @"" for eg
}
答案 2 :(得分:0)
- (IBAction)btnAddRow:(id)sender {
[self loadData:[self.dataArray count]];
[self.tblview reloadData];
}
-(void ) loadData:(NSInteger) Indexvalue
{
newSheet = [NSDictionary dictionaryWithObjectsAndKeys:strEntryID,entryID, nil];
[self.dataArray insertObject:newSheet atIndex:Indexvalue];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
for (UIView *view in cell.subviews) {
if ([view isKindOfClass:[UITextField class]]) {
[view removeFromSuperview];
}
}
UITextField *txtComment = [[UITextField alloc] initWithFrame:CGRectMake(225.0f,5.0f,50.0f,20.0f)];
[txtComment setBorderStyle:UITextBorderStyleLine];
[cell addSubview:txtComment];
[txtComment setTag:indexPath.row];
[txtComment addTarget:self action:@selector(txtCommentChange:) forControlEvents:UIControlEventEditingChanged];
return cell;
}
在单元格分配后,您只需编写一个for循环。