我在Table视图单元格上有UITableView
个UITextField
。用户UITextField
在文本字段中输入一些值,然后滚动表视图。文本字段上的值不会保留。下面的代码
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 100;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
static NSString *CellIdentifierFirst = @"CellFirst";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifierFirst];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier] autorelease];
}
NSArray *cellSubs = cell.contentView.subviews;
for (int i = 0 ; i < [cellSubs count] ; i++) {
[[cellSubs objectAtIndex:i] removeFromSuperview];
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
UITextField * textFieldRounded = [[UITextField alloc] initWithFrame:CGRectMake(100, 5, 150, 40)];
textFieldRounded.borderStyle = UITextBorderStyleNone;
textFieldRounded.textColor = [UIColor blackColor];
textFieldRounded.font = [UIFont systemFontOfSize:17.0];
textFieldRounded.placeholder = @"Type here";
textFieldRounded.backgroundColor = [UIColor whiteColor];
textFieldRounded.autocorrectionType = UITextAutocorrectionTypeNo;
textFieldRounded.keyboardType = UIKeyboardTypeDefault;
textFieldRounded.returnKeyType = UIReturnKeyDone;
textFieldRounded.clearButtonMode = UITextFieldViewModeWhileEditing;
textFieldRounded.delegate = self;
[cell.contentView addSubview:textFieldRounded];
return cell;
}
所以请大家帮帮我
答案 0 :(得分:3)
我的一个应用程序中有相同的功能,我使用下面的代码来实现这一点,我从来没有遇到过这种问题。
首先,您需要将所有textField值临时存储在Array中。像这样制作数组。
arrTemp=[[NSMutableArray alloc]initWithObjects:[NSString stringWithFormat:@""],
[NSString stringWithFormat:@""],
[NSString stringWithFormat:@""],
[NSString stringWithFormat:@""],
[NSString stringWithFormat:@""],
[NSString stringWithFormat:@""],
[NSString stringWithFormat:@""],
[NSString stringWithFormat:@""],
[NSString stringWithFormat:@""],nil];
然后给所有textField标签= indexPath.row;
之后您需要在以下两种方法中替换textField值。
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
[arrTemp replaceObjectAtIndex:textField.tag withObject:textField.text];
}
-(void)textFieldDidEndEditing:(UITextField *)textField{
[arrTemp replaceObjectAtIndex:textField.tag withObject:textField.text];
}
最后您需要在cellForRowAtIndexPath数据源方法中设置该值。因此,无论何时用户滚动tableview,它都会从临时数组中设置以前的值。像这样。
cell.txtEntry.text = [arrTemp objectAtIndex:indexPath.row];
我可能忘记了一些要粘贴的代码。所以,如果您有任何问题,请告诉我。
答案 1 :(得分:0)
您需要为所有行维护一个可变数组。每次更改文本时都必须将文本存储在该数组中,并在调用cellForRowAtIndexPath:
时设置数组中的文本。