我有一个viewController,在scrollview中有一个tableview。
我需要以编程方式更新tableview的高度,然后滚动视图的高度(scrollview的高度取决于tableview的高度)。
-my View Controller
-View
-ScrollView
-Container View
-TableView
所以我在viewController的viewDidAppear中编写了这段代码:
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
var frame:CGRect = self.tableView.frame
frame.size.height = tableView.contentSize.height
self.tableView.frame = frame
scrollView.contentSize=CGSizeMake(scrollView.frame.size.width, tableView.frame.origin.y + tableView.frame.height)
}
如果我在控制台中检查,则在所有cellForRowAtIndexPath之前调用viewDidAppear。在这种情况下,一切都按我的意愿运作。
在我的viewController中,我有一个打开modalViewController的按钮。在这个modalViewController中,我在tableview中添加了一个新数据(所以,一个新的单元格)。
当我使用dismissViewControllerAnimated关闭我的modalViewController时,会调用viewDidAppear但是在所有cellForRowAtIndexPath之后。 我的viewController没有正确显示,tableview被裁剪,我无法滚动到tableView的底部。我的代码不起作用。
我正在使用Swift和自动布局。
答案 0 :(得分:0)
尝试在视图控制器中调用它:
automaticallyAdjustsScrollViewInsets = false
如果您愿意,也可以在Interface Builder中进行设置