2016-08-05 16 views
0

Diese Frage ist w.r.t xib und alten Stil der benutzerdefinierten CellView in UITableView. Ich habe autolayouts in meinen Ansichten.Unteransicht der dynamischen Höhe in UITableViewCell

Ich habe eine DynamicSubView (dynamische Höhe) des Typs UIView, die ich in UITableViewCell wiederverwenden möchte. Dafür habe ich zwei Dinge versucht,

  • DynamicSubview als [cell.contentView addSubview:myDynamicView]
  • hinzugefügt Hinzufügen einer UIView innerhalb cell.xib ‚s mit content Einschränkung 0-0-0-0 auf allen Left-Top-Right-Bottom. Und eine Höhe wie NSLayoutConstraint, die ich & während der Laufzeit ändern. Und setzte identity inspector dieser Ansicht auf DynamicSubview.

In MyCell.m Klasse, habe ich ein Objekt der Klasse DynamicSubView in awakeFromNib & in layoutSubView Methode erstellt hinzugefügt Ich Berechnung dynamische Höhe des DynamicSubView.

Ich habe versucht, Höhe bezogenen Code in heightForRowAtIndexPath, aber es geht in der Endlosschleife für das erste Mal, wenn Tabelle lädt.

Das Problem ist, dass die Zellen überlappen. Sollte ich ein Array von Höhenwerten erstellen und neu laden? Jede bessere Lösung, um die Zelle wieder mit der richtigen Höhe nachzuladen.

Code MyCell Klasse:

- (void)awakeFromNib 
{ 
    [super awakeFromNib]; 
    self.myDynamicView = (DynamicSubView *)self.myContainerView; 
    [self.myDynamicView setUpView:YES]; 
} 

- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 

    [self.myDynamicView doSomething]; 
    self.c_height.constant = [self.myDynamicView getHeightOfDynamicSubview]; 

    //CGRect cellFrame = self.contentView.frame; 
    //self.contentView.frame = CGRectMake(cellFrame.origin.x, cellFrame.origin.y, cellFrame.size.width, self.c_height.constant); 
    self.cellHeight = self.c_height.constant; 
} 
+0

Höhe hängt von? einige string einige bild was? –

Antwort

0

Anstatt die LayoutSubiew mit() innerhalb des tableViewCell, Sie können Sie die folgenden Methoden in der View-Controller

SWIFT

Selbst. tableView.EntimatedRowHeight = 100 (Nehmen wir an, die minimale Höhe Ihrer TableViewCell ist 100)

func Tableview (Tableview: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { return UITableViewAutomaticDimension }