繁体   English   中英

tableview节标题在多截面tableview中不粘

[英]tableview section header is not sticky in multi sectional tableview

我已经在IOS中实现了一个tableview(4个部分)。 问题是我刚刚在第一节中添加了节标题。其他节没有标题。第一节没有行(行数为0)。其他节有多行。当我滚动时,第一节的标题不粘滞。它正在滚动并移出屏幕。我的表视图样式是普通的。我如何使第一节的标题始终粘滞。下面是代码。不幸的是,表视图是如此复杂,我不想使其只有一节,所以我已经实现了多节。

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    if section == 0 {
        return tabHeaderView.contentView
    }
    else {
        return UIView()
    }
}

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    if section == 0 {
      return UITableView.automaticDimension
    }
    else {
        return 0 //just first section have a header (tabview)
    }
}

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return CGFloat.leastNormalMagnitude
}

func numberOfSections(in tableView: UITableView) -> Int {
    if dataReady {
        totalSectionCount = getSectionCount()
        return totalSectionCount
    }
    else {
        return 1 //permanent because of tabview
    }
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
    if !dataReady || ApplicationContext.instance.userAuthenticationStatus.value == .semiSecure{
        return 1//for shimmer cell and semisecure view
    }
    else {
        return getNumberOfRows(sectionNumber: section)
    }
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if ApplicationContext.instance.userAuthenticationStatus.value == .semiSecure {
        semisecureViewCell = EarningsSemisecureViewCell()
        setSemisecureViewTextInfo(cell: semisecureViewCell)
        semisecureViewCell.delegate = self
        semisecureViewCell.layoutIfNeeded()
        return semisecureViewCell
    }
    else if !dataReady {
        return getShimmerCell()
    }
    else {
        if indexPath.row == 0 && !(selectedTabIndex == .BRANDPOINT && indexPath.section == 1){//marka puan listesinde header cell olmayacak
            return getSectionHeaderViewCell(tableView: tableView,sectionNumber: indexPath.section)
        }
        else {
            let cell = getTableViewCell(tableView: tableView, indexPath: indexPath)
            cell.layoutIfNeeded()
            return cell
        }
    }
}

每个节标题都将停留在顶部,直到该节有一些行要显示。 一旦向上滚动该部分的所有行。 节标题将被下一个节标题替换。

在这里,您可以使用两种解决方案之一。

  1. 而不是表视图的节头。 将您的视图放在UITableView之上。
  2. 您只能使用一个部分并合并其中的所有行。

从描述安装方式的角度来看,我倾向于认为您正在寻找的是tableViewtableHeaderView ,而不是节头。

有关更多信息,请参见此问题官方文档

如果不符合你的要求,你可能要考虑在顶部的自定义视图tableView ,如描述在这里

如果在显示任何部分时第一部分必须始终是粘性的,那么我将考虑在tableView顶部放置一个自定义视图。 使用autoLayout或UIStackView使其用作表头视图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM