在iOS 7上使用此代码会导致分隔符视图被覆盖或缩短:
cell.accessoryType = UITableViewCellAccessoryCheckmark;
如何修复分隔符视图?
我正在使用原型单元格,但我没有对它们进行子类化。
[编辑]
以下是来自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;
}
答案 0 :(得分:4)
在我的情况下,我已经禁用了系统提供的分隔线,并在单元格的xib中添加了我的自定义分隔线。有时,右边的复选标记覆盖了底部分隔线的部分。我为解决问题做了什么是我已将尾随约束更改为cell
而不是contentView
。 [不是超级视图]
答案 1 :(得分:0)
在tableview中禁用分隔符,并在单元格底部添加子视图自定义分隔符视图。
答案 2 :(得分:0)
您可以在UITableViewCell的 count
MIC-m H 138
L 3
M 22
X 45
Total 208
MIC-t H 34
L 90
M 30
X 53
Total 207
MIC-q H 73
L 13
M 53
X 68
Total 207
属性上设置backgroundView。在该自定义backgroundView中,添加一个分隔线视图,以扩展视图的整个宽度。 backgroundView不受附件视图的影响。
打开var backgroundView:UIView?
对于UITableViewStylePlain中的单元格,默认值为nil;对于UITableViewStyleGrouped,默认值为nil。 “ backgroundView”将作为子视图添加到所有其他视图的后面。
例如...
backgroundView
答案 3 :(得分:0)
所有答案都无济于事。我结束了:
在 cellforrow 函数中,
if selectedItem == tableData[indexPath.tow]{
cell.checkMarkLabel.isHidden = false
} else {
cell.checkMarkLabel.isHidden = true
}
在 didSelectRow 函数中,
selectedItem = tableData[indexPath.tow]
DispatchQueue.main.async {
self.tableView.reloadRows(at: tableView.indexPathsForVisibleRows!, with: .none)
}
答案 4 :(得分:-1)
转到Xib或Storyboard,选择tableview并将分隔符样式设置为单行。