UITableView 高度问题
Posted
技术标签:
【中文标题】UITableView 高度问题【英文标题】:UITableView height issue 【发布时间】:2019-02-28 22:37:26 【问题描述】:我有一个UIStackView
,我在其中添加了一个UIButton
和UITableView
作为subviews
。最初,由于 table view 没有内容,它的高度为零。
当用户采取行动时,UItableView
会收到一些数据并自行重新加载。
在numberOfRowsInSection
中,我返回了计数,但由于UITableView
的高度为零,因此对cellForRowAt
的调用不起作用。
我想在没有内容时保持UITableView
的高度为零,并在有内容时给它高度。
由于UITableView
是UIStackView
的子视图,它也应该扩展
我怎样才能实现它?
【问题讨论】:
使用 UITableView 的estimatedRowHeight。 这会有什么帮助 【参考方案1】:一旦收到数据,您可以调整 tableview 的框架。检查此链接: UITableView not shown inside UIStackView
【讨论】:
【参考方案2】:嘿,我做了一些与此非常相似的事情,希望这会有所帮助。
final class SignInVC: UIViewController
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var tableViewHeight: NSLayoutConstraint!
// Whatever max height you are after
private let maxTableViewHeight = 500
// Whatever height you are after
private let rowHeight = 90
// Just using string array for example but use your own array here
private var fields: [String] = []
override func viewDidLoad()
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
setTableViewHeight()
private func setTableViewHeight()
var newHeight = fields.count * rowHeight
if newHeight > maxTableViewHeight
newHeight = maxTableViewHeight
tableViewHeight.constant = newHeight
@IBAction func addField(_ sender: Any)
fields.append("Test")
setTableViewHeight()
tableView.reloadData()
extension SignInVC: UITableViewDelegate, UITableViewDataSource
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return fields.count
// Rest of your datasource/delegate below...
// I am assuming you have your own already
希望这会有所帮助:)
【讨论】:
以上是关于UITableView 高度问题的主要内容,如果未能解决你的问题,请参考以下文章
UITableView(_UITableViewPrivate) _smoothscroll: 负责啥?
UIView 与 UITableview 和 UIImageview,使用 reloadData 访问 UITableview