tableview高度不在superview内部更新

时间:2016-01-17 08:22:29

标签: ios

i am designing layouts as shown in image . issue is when i am adding entries in leavedetailtableview table view height remains as it is and innerview1 height is also not changing. i tried tableviewlayout and innerviewlayout but can't fixed the issue. anyone any help please suggest where i am doing mistake.

enter image description here

我正在更新表格视图的高度,如下所示:

 self.leaveDetailTableView.rowHeight = 150;

self.leaveDetailTableViewHeightLayout.constant = [AppStateManager sharedInstance].totalDays * self.leaveDetailTableView.rowHeight ;

CGFloat height = [AppStateManager sharedInstance].totalDays * self.leaveDetailTableView.rowHeight;

CGRect tableFrame = self.leaveDetailTableView.frame;

tableFrame.size.height = height;

CGFloat newHeight = self.innerView1.frame.size.height + tableFrame.size.height;

self.leaveDetailTableView.frame = tableFrame;

[self.leaveDetailTableView setNeedsDisplay];

self.innerView1HeightLayout.constant = newHeight;

CGFloat combinedHeight =  newHeight + self.innerView2.frame.size.height + self.innerView3.frame.size.height + self.innerView4.frame.size.height + self.applyLeaveBtn.frame.size.height;

_contentViewHeightLayout.constant = combinedHeight;

[self.containerView layoutIfNeeded];

[self.leaveDetailTableView reloadData];

1 个答案:

答案 0 :(得分:0)

表视图本身就是一个滚动视图。使用tableview的意图应该是向用户呈现比屏幕可以显示的更多数据。用户滚动表视图。如果AppStateManager返回30,则表视图的高度为4500。此外,表视图本身永远不会滚动并使用最可能的内存。这真的是你想要的吗?

相反,您应该考虑显示一个与屏幕一样大的表格视图,并混合显示按钮,文本和图像的各种单元格 - 但是您需要它。

  1. 您是否尝试过停用Autolayout?

  2. 您不需要在每次重新加载时分配表格视图的行高。相反,您可以分别从每行的dataSource(或委托??)对应方法返回行高。

  3. 您不需要调用[setNeedsDisplay]。如果您已实现-drawRect并希望Cocoa / UIKit再次调用此方法,则只需要此调用。