UITableView的tableViewHeader和tableViewCells重叠,直到调用reloadData

时间:2017-04-12 13:10:11

标签: ios swift uitableview uicollectionview autolayout

我有一个表格视图,其中tableViewHeader和单个部分填充了单元格。

在创建UITableView之前,我创建了一个名为topSection的视图,该视图具有视图的宽度和基于从API返回的文本的可变高度。

当我加载视图控制器时,由于API调用正在进行中,我可以非常简单地看到位于topSection后面的UITableView.tableViewHeaderUITableViewCells)。然后,当我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)

这里的任何帮助将不胜感激。谢谢!

1 个答案:

答案 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
}