我正在更新表格视图的高度,如下所示:
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];
答案 0 :(得分:0)
表视图本身就是一个滚动视图。使用tableview的意图应该是向用户呈现比屏幕可以显示的更多数据。用户滚动表视图。如果AppStateManager返回30,则表视图的高度为4500。此外,表视图本身永远不会滚动并使用最可能的内存。这真的是你想要的吗?
相反,您应该考虑显示一个与屏幕一样大的表格视图,并混合显示按钮,文本和图像的各种单元格 - 但是您需要它。
您是否尝试过停用Autolayout?
您不需要在每次重新加载时分配表格视图的行高。相反,您可以分别从每行的dataSource(或委托??)对应方法返回行高。
您不需要调用[setNeedsDisplay]。如果您已实现-drawRect并希望Cocoa / UIKit再次调用此方法,则只需要此调用。