gpt4 book ai didi

ios - UITableview 默认单元格中的自定义分隔符显示意外行为

转载 作者:行者123 更新时间:2023-11-29 11:32:18 24 4
gpt4 key购买 nike

请通过这些点

  • 您好,我已经在我的代码中动态添加了一个 TableView 。
  • 我想在默认的表格 View 单元格中显示我自己的分隔符。
  • 因为默认分隔符与 y 轴有一定距离。

我知道我们可以使用单元格分隔符插入属性来实现这一点。但是这个问题我遇到了一些奇怪的事情。

DropDownTbl=[[UITableView alloc]initWithFrame:CGRectMake(BookTypeTxt.frame.origin.x, BookTypeTxt.frame.origin.y+BookTypeTxt.frame.size.height, BookTypeTxt.frame.size.width-11, height)];
DropDownTbl.separatorStyle = UITableViewCellSeparatorStyleNone;
DropDownTbl.tag=98;
DropDownTbl.delegate=self;
DropDownTbl.dataSource=self;

[self.settingView addSubview:DropDownTbl];
[DropDownTbl reloadData];

在我的 tableview 单元格中,我添加了这种样式的分隔符,问题是这样分隔符 View 被添加了两次,如给定图像中显示的那样

UITableViewCell *cell = (UITableViewCell *) [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

if(cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}

cell.textLabel.text=[BookTypeArray objectAtIndex:indexPath.row];
cell.textLabel.font = [UIFont fontWithName:@"HelveticaNeue-Medium" size:15.0f];
UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0,cell.contentView.frame.size.height-1, DropDownTbl.frame.size.width, 1)];
lineView.backgroundColor = [UIColor blackColor];
[cell.contentView addSubview:lineView];

cell.textLabel.font=[UIFont fontWithName:@"Arial" size:12];

return cell;

enter image description here

所以我决定在单元格中添加 linview == nil 括号

UITableViewCell *cell = (UITableViewCell *) [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if(cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0,cell.contentView.frame.size.height-1, DropDownTbl.frame.size.width, 1)];
lineView.backgroundColor = [UIColor blackColor];
[cell.contentView addSubview:lineView];
}

cell.textLabel.text=[BookTypeArray objectAtIndex:indexPath.row];
cell.textLabel.font = [UIFont fontWithName:@"HelveticaNeue-Medium" size:15.0f];
cell.textLabel.font=[UIFont fontWithName:@"Arial" size:12];

return cell;

这样,当重复使用单元格时,我的分隔符就会消失。我只想知道为什么会这样?

最佳答案

此问题的产生是因为当您滚动 TableView 时多次调用 cellForRowAt 每次此代码在单元格 contentView 中添加新行时。

试试这个。

[[cell.contentView viewWithTag:5] removeFromSuperview];

if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];

}

UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0,cell.contentView.frame.size.height-1, tableView.frame.size.width, 1)];
lineView.tag = 5;
lineView.backgroundColor = [UIColor blackColor];
[cell.contentView addSubview:lineView];

关于ios - UITableview 默认单元格中的自定义分隔符显示意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52256338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com