UITableViewCellAccessoryCheckmark涵盖iOS 7上的单元格分隔符

ars*_*ius 9 uitableview ios

在iOS 7上使用此代码会导致分隔符视图被覆盖或缩短:

cell.accessoryType = UITableViewCellAccessoryCheckmark;
Run Code Online (Sandbox Code Playgroud)

如何修复分隔符视图?

我正在使用原型单元格,但我不是它们的子类.

在此输入图像描述

[编辑]

以下是cellForRowAtIndexPath的相关代码:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier forIndexPath:indexPath];

if (indexPath.section == kDefaultViewSection){
    NSArray *defaultViewNames = @[LQSettingsSentenceView, LQSettingsFullTextView, LQSettingsFlashcardsView];
    NSString *preferredViewName = [LQSettings valueForKey:LQSettingsPreferredLessonView];
    if ([defaultViewNames[indexPath.row] isEqualToString:preferredViewName]){
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    } else {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }
}



- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    if (indexPath.section != kDefaultViewSection){
        return;
    }

    // Just turn all checks off for a minute
    for (int x=0; x<3; x++) {
        NSIndexPath *ip = [NSIndexPath indexPathForRow:x inSection:kDefaultViewSection];
        UITableViewCell *cell = [tableView cellForRowAtIndexPath:ip];
        cell.accessoryType = UITableViewCellAccessoryNone;
    }

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.accessoryType = UITableViewCellAccessoryCheckmark;    
}
Run Code Online (Sandbox Code Playgroud)

tou*_*bun 6

在我的情况下,我禁用了系统提供的分隔线,并在单元格的xib中添加了我的自定义分隔线。有时,正确的复选标记覆盖了底部分隔线的一部分。约束到cell而不是contentView。[ 不是超级视图 ]

在此处输入图片说明


Adi*_*hya 0

禁用表格视图中的分隔符,并在单元格底部添加子视图和自定义分隔符视图。