我是唯一一个遇到此问题的人吗?
我在分组表视图中有几个部分和几行,用于注册页面。当我在页面上下滑动时,两个单元格之间出现奇怪的分隔符粗线。像它一样的一些细胞下沉已被按下。这是iOS 5.0的错误吗?我已经为这个小问题工作了3天。请帮忙!
我试过
self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
和
self.tableView.separatorColor = [UIColor lightGrayColor];
他们都没有工作。
[被修改]
保罗·佩伦你是对的,我知道你的意思,但我没有继续前进的知识。在我评论“if(cell == nil)”之前,一切都和你说的一样。但是在我评论它之后,标签显示得很好,并且分隔线不再有问题,但是当我将文本插入textField并向下滑动并再次向上时,textField的文本已经消失并被刷新。我该如何解决这个问题? 以下是我的代码:- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"LabelCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
//Here's the problem!
if(cell == nil)
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
UILabel *keyLbl = [[UILabel alloc] initWithFrame:CGRectMake(15, 8, 100, 30)];
keyLbl.font = [UIFont fontWithName:@"Futura-CondensedExtraBold" size:15.0];
keyLbl.textColor = [UIColor colorWithRed:0.275 green:0.275 blue:0.275 alpha:0.9];
keyLbl.backgroundColor = [UIColor clearColor];
valTxtField = [[UITextField alloc] initWithFrame:CGRectMake(120, 5, 180, 30)];
valTxtField.font = [UIFont fontWithName:@"Futura-CondensedExtraBold" size:18.0];
valTxtField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
valTxtField.delegate = self;
valTxtField.returnKeyType = UIReturnKeyDone;
valTxtField.autocorrectionType = UITextAutocorrectionTypeNo;
valTxtField.autocapitalizationType = UITextAutocapitalizationTypeNone;
if(indexPath.section == 0)
{
if(indexPath.row == 0)
{
keyLbl.text = NSLocalizedString(@"REGIS_EMAIL", nil);
email_TextField = valTxtField;
}
else if(indexPath.row == 1)
{
keyLbl.text = NSLocalizedString(@"REGIS_RE_EMAIL", nil);
reEmail_TextField = valTxtField;
}
else if(indexPath.row == 2)
{
keyLbl.text = NSLocalizedString(@"REGIS_PWD", nil);
password_TextField = valTxtField;
valTxtField.secureTextEntry = YES;
}
else if(indexPath.row == 3)
{
keyLbl.text = NSLocalizedString(@"REGIS_RE_PWD", nil);
rePassword_TextField = valTxtField;
valTxtField.secureTextEntry = YES;
}
}
else if(indexPath.section == 1)
{
if(indexPath.row == 0)
{
keyLbl.text = NSLocalizedString(@"REGIS_FIRSTNAME", nil);
firstName_TextField = valTxtField;
}
if(indexPath.row == 1)
{
keyLbl.text = NSLocalizedString(@"REGIS_LASTNAME", nil);
lastName_TextField = valTxtField;
}
if(indexPath.row == 2)
{
keyLbl.text = NSLocalizedString(@"REGIS_POSTCODE", nil);
postCode_TextField = valTxtField;
}
if(indexPath.row == 3)
{
keyLbl.text = NSLocalizedString(@"REGIS_GENDER", nil);
gender_TextField = valTxtField;
}
if(indexPath.row == 4)
{
keyLbl.text = NSLocalizedString(@"REGIS_DOB", nil);
DOB_TextField = valTxtField;
}
if(indexPath.row == 5)
{
keyLbl.text = NSLocalizedString(@"REGIS_MOBILE", nil);
mobile_TextField = valTxtField;
}
}
[cell addSubview:keyLbl];
[cell addSubview:valTxtField];
[keyLbl release];
[valTxtField release];
return cell;
}
答案 0 :(得分:1)
你想要一个分色器吗?如果没有,你总是可以将它设置为清除。
self.tableView.separatorColor = [UIColor clearColor];
答案 1 :(得分:1)
这很可能是因为您在单元格上使用了不同的设置。由于单元格被重复使用而不是为每个单元格创建新单元格,因此您可以获得一个重用的单元格,它们具有不同的设置,这些设置已由最后一个使用它的单元格设置。
例如,假设您的UITableView中有4个单元格可见。这意味着6或7都加载到内存中但尚未可见。假设您有一个总共10个单元格的列表,那么当您向下滚动时,单元格#8将仅在应该显示时加载到内存中,释放任何其他不应再显示的单元格。因此,#8小区将获得前一个小区#0的小区。如果然后在#8中设置背景颜色应该是红色,然后再次向上滚动,您将看到单元格#0也将具有红色背景,除非您告诉单元格#0具有白色背景,然后它将是白色的。
分离器也是如此。
测试此方法的简单方法是让“cellIdentifier”独一无二。
答案 2 :(得分:0)
这是我对显示表格视图时发生的所有奇怪事情的解决方案:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//Here the solution:
NSString *CellIdentifier = [NSString stringWithFormat:@"RCell%1dR%1d",indexPath.section,indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
//your tableView code...
}