我的UIScrollView
底部有UITableVIew
。这个UITableView
动态增长和减少,所以在我按“update button
”之前我不知道大小。
当我按下“更新按钮”时,我会更新UITableView
frame
和UIScrollView
height
。
奇怪的是,在按下2次更新按钮...
UITableView
不可见
有人看到错误吗?我尝试了所有内容,例如setNeedsDisplay
或致电[self viewDidLoad]
,但它无效。
这是我的代码:
-(IBAction)update:(id)sender {
[[ApiHandler instance] update:self.item.hash complete:^(NSInteger responseCode, NSInteger status, NSArray *comments, NSDictionary *reason) {
if(responseCode == 200) {
[self.item setStatus:status];
[self.item setComments:comments];
[self initViews];
}
}];
}
- (void)initViews {
if(self.item.comments.count > 0) {
[self.commentsTableView setHidden:NO];
}else {
[self.commentsTableView setHidden:YES];
}
NSInteger numOfRows = self.item.comments.count;
long tableHeight = numOfRows * 110;
int height = (650 + tableHeight);
[self.constraint setConstant:height]; //Height constraint for the UIView inside the UIScrollView.
CGRect tableFrame = [self.commentsTableView frame];
tableFrame.size.height = tableHeight;
[self.commentsTableView setFrame:tableFrame];
[self.commentsTableView reloadData];
}
答案 0 :(得分:0)
我解决了。我刚刚在UITableView高度添加了一个Constraint:
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *commentsTableHeightConstraint;
然后我更新约束:
- (void)initViews {
if(self.item.comments.count > 0) {
[self.commentsTableView setHidden:NO];
}else {
[self.commentsTableView setHidden:YES];
}
NSInteger numOfRows = self.item.comments.count;
long tableHeight = numOfRows * 110;
int height = (650 + tableHeight);
[self.constraint setConstant:height];
[UIView animateWithDuration:0.25 animations:^{
self.commentsTableHeightConstraint.constant = tableHeight;
[self.commentsTableView reloadData];
[self.view needsUpdateConstraints];
}];
}