2017-05-05 47 views
0

我想將自定義單元格分隔符僅添加到第一行(其中所有請求的曲面都是)表格。但是,每當我滾動時,粗灰線就會出現在其他行中。我如何避免這種情況發生?將自定義分隔符高度添加到UITableViewCell滾動時不起作用

在我cellForRowAtIndexPath方法我有這樣的:

if (indexPath.row == 0 && [cell.dicInfo[AIRCRAFTSURFACE_SURFACE] isEqualToString:@"ALL REQUESTED SURFACES"]) { 
      cell.lblSurface.font = [UIFont fontWithName:@"OpenSans-Bold" size:16.0f]; 
      CGRect sizeRect = [[UIScreen mainScreen] bounds]; 
      NSInteger separatorHeight = 10; 
      additionalSeparator.frame = CGRectMake(0,cell.contentView.frame.size.height-separatorHeight,sizeRect.size.width,separatorHeight); 
      additionalSeparator.backgroundColor = [UIColor lightGrayColor]; 
      [cell addSubview:additionalSeparator]; 
} 

我有viewDidLoad初始化UIView *additionalSeparator;

難道是因爲細胞被重複使用而導致某些事情發生?

enter image description here

+1

是的,這是因爲細胞被重新使用。您在第一次請求第0行時添加子視圖...當您滾動時,該單元格可能重用第6行...但您並未刪除子視圖。就個人而言,我會製作3種單元格類型:「標題行」「分隔符行」和「行項目行」。然後我不必擔心它(再加上它比在cellForRowAtIndexPath裏面創建/添加子視圖要簡單得多) – DonMag

回答

0

嘗試增加一個else語句刪除在其他行的分隔符。

- (void)viewDidLoad { 
    UIView *additionalSeparator = [[UIView alloc] init....]; 
    additionalSeparator.tag = 9999; 
    . 
    . 
    } 

    - (UITableViewCell *)tableView:(UITableView *)_tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    . 
    . 
    additionalSeparator.backgroundColor = [UIColor lightGrayColor]; 
    [cell addSubview:additionalSeparator]; 
    } else { 
    [[cell viewWithTag:9999] removeFromSuperView]; 
    } 
+0

這似乎是個竅門,但它似乎仍然切斷了橙色和綠色框(它是單元格的一部分)。我試圖通過使用'cell.contentView.frame = CGRectMake(cell.contentView.frame.origin.x,cell.contentView.frame.origin.y,cell.contentView.frame.size.width, cell.contentView.frame.size.height + 10);'但這似乎不起作用。 你能幫忙嗎? – Simon

+0

您需要添加約束來修復那些不屬於您原始問題的部分。 – janusbalatbat

相關問題