我有UITableView
Custom Cell
。一些自定义单元格正在加载图像。
我为具有图像的单元格添加了自定义分隔符。滚动时出现问题。每当我滚动时,UIView
opacity
都会发生变化。
这是我的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil){
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
cell = [topLevelObjects objectAtIndex:0];
}
if (cell && (NSNull*) imageString != [NSNull null])
{
UIView* separatorLineView; = [[UIView alloc] initWithFrame:CGRectMake(0, -1, 320, 5)];
separatorLineView.backgroundColor = [UIColor blackColor];
separatorLineView.alpha = 0.2;
[cell.contentView addSubview:separatorLineView];
}
Alpha
给出的视图是0.2
,滚动时它变得越来越厚。我该如何解决这个问题?
答案 0 :(得分:0)
我认为问题在于您在滚动时已经将一个separatorLineView添加到已经有一个的单元格中,因此您所看到的是其他行之上的行。您可以通过在线条视图中添加标记来修复此问题,并检查单元格是否包含带有该标记的子视图,如果是,则不要添加其他行。
答案 1 :(得分:0)
在您的代码中可能是单元格可重用性的问题。请尝试使用以下代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
.
.
.
.
if(cell == nil)
{
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
cell = [topLevelObjects objectAtIndex:0];
if(cellHasImage == YES)
{
//// just initialize UIView and add as addSubview of cell.contentView
UIView* separatorLineView; = [[UIView alloc] init];
separatorLineView.frame = CGRectMake(0, -1, 320, 5);
separatorLineView.tag = 111; // set whatever you like
[cell.contentView addSubview:separatorLineView];
}
}
.
.
.
/// get UIView base on it's tag
if(cellHasImage == YES)
{
UIView* separatorLineView; = (UIView *) [cell.contentView viewWithTag:111];
separatorLineView.backgroundColor = [UIColor blackColor];
separatorLineView.alpha = 0.2;
}
.
.
.
return cell;
}
答案 2 :(得分:0)
执行@rmaddy和@rdelmar所建议的内容,但是既然您仍在使用自定义单元格,那么最快的方式就是:
contentView
@property (strong, nonatomic) IBOutlet UIView *vwLine;
@synthesize vwLine;
hidden
媒体资源设为YES
imageString != [NSNull null]
检查时
[cell.vwLine setHidden:NO];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell"
owner:self
options:nil];
cell = [topLevelObjects objectAtIndex:0];
}
if (imageString != [NSNull null]) {
[cell.vwLine setHidden:NO];
}
}