我有一个表格视图,其中tableViewHeader
和单个部分填充了单元格。
在创建UITableView
之前,我创建了一个名为topSection
的视图,该视图具有视图的宽度和基于从API返回的文本的可变高度。
当我加载视图控制器时,由于API调用正在进行中,我可以非常简单地看到位于topSection
后面的UITableView.tableViewHeader
(UITableViewCells
)。然后,当我reloadData
中调用didSet
来呈现表格视图时,所有内容都会正确显示。
在topSection
UITableView
之前,我没有以任何方式限制top
我还尝试将topSection
tableView
约束到top
let listingsTableView = UITableView()
listingsTableView.backgroundColor = .white
listingsTableView.dataSource = self
listingsTableView.delegate = self
listingsTableView.rowHeight = 78
listingsTableView.bounces = false
listingsTableView.allowsSelection = false
listingsTableView.tableHeaderView = topSection
listingsTableView.register(ListingsHeaderView.self, forHeaderFooterViewReuseIdentifier: "HeaderView")
listingsTableView.register(ListingsTableViewCell.self, forCellReuseIdentifier: "ListingsCell")
view.addSubview(listingsTableView)
constrain(listingsTableView, topSection) { tableview, topSection in
tableview.top == tableview.superview!.top
tableview.left == tableview.superview!.left
tableview.right == tableview.superview!.right
tableview.bottom == tableview.superview!.bottom
}
self.listingsTableView = listingsTableView
,但这也不起作用。
java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at com.alaasamizarifa.driver_aghrady.FrontEnd.Adapters.ExpandAdapter$ReyclerViewHolder.SetHeaderData(ExpandAdapter.java:90)
at com.alaasamizarifa.driver_aghrady.FrontEnd.Adapters.ExpandAdapter.onBindViewHolder(ExpandAdapter.java:57)
at com.alaasamizarifa.driver_aghrady.FrontEnd.Adapters.ExpandAdapter.onBindViewHolder(ExpandAdapter.java:23)
at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6356)
这里的任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
我认为您遇到了一个常见的问题 - 表格没有自动调整大小"标题视图没有一点提示。
尝试将此添加到您的代码中(您可能需要更改视图引用...):
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
sizeHeaderToFit()
}
func sizeHeaderToFit() {
let headerView = theTableView.tableHeaderView!
headerView.setNeedsLayout()
headerView.layoutIfNeeded()
let height = headerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
var frame = headerView.frame
frame.size.height = height
headerView.frame = frame
theTableView.tableHeaderView = headerView
}