【发布时间】:2020-03-24 03:07:06
【问题描述】:
我在运行时面临桌子高度问题。
我的超级视图中添加了一个滚动视图。在滚动视图上,我在顶部添加了一个 UIView,然后在 UIView 之后我放置了一个 UITableView(scrollEnabled false)并再次在我的 UITableView 底部添加了一个 UIView。
问题:我希望用户在屏幕上进行一次滚动,所以我禁用了表格视图滚动属性。现在我的问题是我从服务器获取表数组数据,所以在从服务器获取数据后,我的 viewDidLayoutSubviews 方法没有在我编写表高度逻辑的地方被调用。当我重新加载同一个屏幕时,一切正常。
这是我的代码:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
if devicesArray.count != 0{
viewDeviceList.frame = CGRect(x: viewDeviceList.frame.origin.x, y: viewDeviceList.frame.origin.y, width: viewDeviceList.frame.size.width, height: tableDeviceList.contentSize.height)
tableDeviceList.reloadData()
}
}
任何人都可以在这方面给我建议。谢谢。
【问题讨论】:
-
所以你想要一个根据行动态增长和收缩的表视图?如果是这样,您可以执行类似的操作:stackoverflow.com/a/55068380/10473781
-
当你从服务器获取数据时:试试 tableView.reloadData() 然后 self.view.layoutIfNeeded()
-
嗨@KeshuRai我在下面添加了self.view.layoutIfNeeded() 来重新加载我的tableview。但是table view的高度不对。
-
我更喜欢这种结构:imgur.com/X2jybHZ。这样您就不必担心高度和滚动视图。 Tableview 会处理一切。
-
好的,你能检查一下我的viewDidLayoutSubviews的逻辑吗?我说的对吗?
标签: ios swift uitableview uiscrollview row-height