我试图从API响应中加载表视图中的数据,从API响应中获取数组并将其传递给表视图委托和数据源。我想在单个部分下显示数组的每个元素。我正在传递一个节数组,但是当我加载数据时,它会在一个节下显示多个元素。看起来就是这样
这是我的代码,用于显示数据,
func numberOfSections(in tableView: UITableView) -> Int {
return headerArray.count
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 35
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let bgView = UIView()
bgView.backgroundColor = #colorLiteral(red: 0.3221348226, green: 0.6953448653, blue: 0.9635410905, alpha: 1)
bgView.layer.cornerRadius = 2.0
let titleLbl = UILabel()
titleLbl.frame = CGRect(x: 10, y: 10, width: 150, height: 20)
titleLbl.text = headerArray[section]
titleLbl.font = UIFont.systemFont(ofSize: 17, weight: .semibold)
titleLbl.textColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
bgView.addSubview(titleLbl)
return bgView
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if vcType == "SellerInProcess"
{
return propertyObject?.owners?.count ?? 0
}
else
{
return ownersList?.count ?? 0
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let owners = ownerArray[indexPath.row]
if owners.userType != nil && owners.userType == Identity.OWNER {
let cell : OwnerListTableViewCell! = tableView.dequeueReusableCell(withIdentifier: "OwnerListTableViewCell", for: indexPath) as? OwnerListTableViewCell
let ownerData = ownersList![indexPath.row]
cell.ownerData = ownerData as? OwnerModel
return cell
}
}
对于节数组,我是这样制作的,
var i = 1
self?.headerArray.removeAll()
for _ in self?.ownersList ?? []
{
let index = i + 0
i += 1
self?.print(i,index)
let sectionString = "Owner \(index)"
self?.headerArray.append(sectionString)
}
我如何在单个部分下显示每个元素?
答案 0 :(得分:0)
如果每个节中只需要一个单元格,则需要在numberOfRowsInSection
方法中返回1或0(对于空节)。您还需要修改cellForRow
部分,并使用indexPath.section
作为数组索引来获取此部分的元素。
我也不会准备headerArray
,因为您可以在viewForHeaderInSection
内生成字符串,因为您将获得section
变量并可以执行以下操作:let headerTitle = "Owner \(section + 1)"
+1是因为索引从零开始计数。
答案 1 :(得分:0)
适当组织您的数据。
例如,创建类似
的模型struct Section {
let headerName : String
let owner : WhateverItsTypeIs
}
并将您的数据映射到该模型的数组
var sections = [Section]()
然后在section.count
中返回numberOfSections
和1
中的0
(或owner
然后将numberOfRowsInSection
设为可选)。
无论如何都不要使用多个数组作为数据源。