2017-05-05 4 views
0

Ich versuche, einen benutzerdefinierten Zelltrennzeichen nur der ersten Zeile (wo alle angeforderten Oberflächen ist) der Tabelle hinzuzufügen. Wenn ich jedoch scrolle, erscheint die dicke graue Linie irgendwann auch in anderen Reihen. Wie verhindere ich das?Hinzufügen von benutzerdefinierten Trennhöhe zu UITableViewCell funktioniert nicht beim Bildlauf

In meiner cellForRowAtIndexPath Methode Ich habe dies:

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]; 
} 

Ich habe die UIView *additionalSeparator; auf viewDidLoad initialisiert.

Könnte es daran liegen, dass die Zellen wiederverwendet werden und dadurch etwas passiert?

enter image description here

+1

Ja, das liegt daran, dass die Zellen wiederverwendet werden. Sie fügen die Unteransicht zum ersten Mal hinzu, wenn Zeile 0 angefordert wird ... Wenn Sie einen Bildlauf durchführen, wird diese Zelle möglicherweise für Zeile 6 wiederverwendet ... Sie haben die Unteransicht jedoch nicht entfernt. Persönlich würde ich 3 Zelltypen machen: "Title Row" "Separator Row" und "Line Item Row". Dann muss ich mir keine Sorgen machen (und es ist eine viel sauberere Methode, als Subviews innerhalb von 'cellForRowAtIndexPath' zu erstellen/hinzuzufügen) – DonMag

Antwort

0

versuchen, eine andere Erklärung geben Sie Ihren Separator in anderen Zeilen zu entfernen.

- (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

Das schien den Trick zu machen, aber es scheint immer noch die Orange und Grün abschneiden Box (die Teil der Zelle sind). Ich habe versucht, die Höhe der Zelle mit '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); 'aber das scheint nicht zu funktionieren. Können Sie dabei helfen? – Simon

+0

Sie müssen Einschränkungen hinzufügen, um das zu beheben, was nicht Teil Ihrer ursprünglichen Frage ist. – janusbalatbat

Verwandte Themen