我已经在IOS中实现了一个表格视图(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
}
}
}
答案 0 :(得分:2)
每个节标题都将停留在顶部,直到该节有一些行要显示。一旦向上滚动该部分的所有行。节标题将被下一个节标题替换。
在这里您可以使用两种解决方案之一。
答案 1 :(得分:1)
从描述安装方式的角度来看,我倾向于认为您正在寻找的是tableHeaderView
中的tableView
,而不是节标题。
有关更多信息,请参见this question或official documentation。
如果这不符合您的要求,您可能想在tableView
上考虑自定义视图,如here所述。
答案 2 :(得分:0)
如果在显示任何部分时第一部分必须始终是粘性的,那么我将考虑在tableView的顶部放置一个自定义视图。使用autoLayout或UIStackView使其可以用作表标题视图。