【发布时间】:2010-10-29 15:49:19
【问题描述】:
我有一个包含四个部分的表格视图,第一部分有 7 行,前六行有一个文本字段,最后一行有两个文本字段
第 1 节
t1
t1
t1
t1
t1
t1
t1 t2
第 2 节
t1 t2
t1 t2 // 第二行文本字段放在第四行
t1 t2
t1 t2 // 第四行文本字段被放置在其他行中
t1 t2
t1 t2
t1 t2
第 3 节
t1 t2
t1 t2
t1 t2
t1 t2
t1 t2
t1 t2
t1 t2
第四节
t1
t1
t1
t1
t1
t1
t1
t1
第二和第三部分包含七行,每行有两个文本字段
第四部分有八行,每行包含一个文本字段我为所有文本字段分配了唯一标签
在 textFieldDidEndEditing 中,我将内容保存到适当索引的数组中。
如果我在文本字段中输入数据后滚动表格视图。一些文本字段的位置发生了变化(即)第二行中的文本字段被放置在第三行中,同样一些行被交换了。
我创建了 5 个单元格标识符,一个用于第一部分的前六行,第二个用于第一部分的最后一行,其余三个用于其他部分的单元格标识符。
当我滚动某些时候 cell.contentview viewWithtag 返回标签的 nil 值
我认为这是某些行中文本字段错误的原因。
如何解决这个问题?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *identifier;<bn>
UITableViewCellStyle style = UITableViewCellStyleDefault;<br>
BOOL selectable = NO;<br>
switch (indexPath.section)
{
case 0:
{
if(indexPath.row < 6)
identifier = @"firstsectionSixRows";
else
identifier = @"firstsectionLastRow";
break;
}
case 1:
identifier = @"secondsection";
break;
case 2:
identifier = @"thirdsection";
break;
case 3:
identifier = @"fourthsection";
break;
}
return [self createCellForIdentifier:identifier
tableView:tableView
indexPath:indexPath
style:style
selectable:selectable];
}
在 createCellForIdentifier 方法中
else if([identifier isEqualToString:@"secondsection"])
{
int TextTag = 8 + indexPath.row * 2;
UILabel *lblName = (UILabel*)[cell.contentView viewWithTag:10000];
lblName.text = [NSString stringWithFormat:@"G%d",indexPath.row + 1];
//NSLog(@"row = %d texttag = %d",indexPath.row,TextTag);
UITextField *txtFirst = (UITextField*) [cell.contentView viewWithTag:TextTag];
if([textFieldArray count] > 0)
{
if(![[textFieldArray objectAtIndex:TextTag] isEqualToString:@""])
{
if(txtFirst)
txtFirst.text = [NSString stringWithFormat:@"%@",[textFieldArray objectAtIndex:TextTag]];
else
NSLog(@"Textfield is nil \n tag = %d \n cell section = %d row = %d",TextTag,indexPath.section,indexPath.row);
}
}
UITextField *txtSecond = (UITextField*) [cell.contentView viewWithTag:TextTag + 1];
if([textFieldArray count] > 0)
{
if(![[textFieldArray objectAtIndex:TextTag + 1] isEqualToString:@""])
{
if(txtSecond)
txtSecond.text = [NSString stringWithFormat:@"%@",[textFieldArray objectAtIndex:TextTag + 1]];
else
NSLog(@"Textfield is nil \n tag = %d \n cell section = %d row = %d",TextTag + 1,indexPath.section,indexPath.row);
}
}
}
【问题讨论】:
标签: ios objective-c iphone uitableview