我有多个类型单元格显示在UITableView
。
我在UITableView
中有五种类型的单元格。所有单元格根据不同的服务响应数据显示,如果服务数据为零或空,则我们不需要显示单元格。所以我如何检查行数并根据服务响应显示单元格。
答案 0 :(得分:1)
Swift 3
假设你有一个 tableView ,它有两种类型的单元格。 indexPath.row == 0 会显示标题单元格&其余的细胞是信息持有者细胞。为此,您需要执行以下操作
extension YourControllerName: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return yourDataHolderArray.count
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
// Specify the height of cell if the cells height are different
if indexPath.row == 0 {
return 30.0
}
return 80.0
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if yourDataHolderArray.count > 0 {
if indexPath.row == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell1", for: indexPath) as! YourHeaderCell
return cell
}
else {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell2", for: indexPath) as! YourInfoCell
return cell
}
}
return UITableViewCell()
}
}
希望它有所帮助。
答案 1 :(得分:0)
如果您提供了回复,问题可以得到更好的解答。但是对于通用方法,您可以将numberOfSections方法与numberOfRows方法结合使用。
使用responseData的计数配置numberOfSections方法。如果有可用于该部分的数据,您还可以在每个部分中指定numberOfRows。
答案 2 :(得分:0)
您可以在数组中插入类型..以及tableView
的cellforRow函数if type == 1{
// your first cell code
}
else if type == 2
{
//your second cell
}
等等......
答案 3 :(得分:0)
首先接收ResponseDataSet并调用tableView.reloadData()
然后
部分代表的数量将返回部分的数量
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
委托的行数将返回每个相应部分中的行数。如果它返回0,则不会调用行委托的单元格
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return responseSet?.count ?? 0 // The count of response data set
}
在这里,您可以从responseSet检查每个单元格的类型,然后使用出列单元格功能创建或重用单元格。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell:UITableViewCell?
if responseSet["type"] == "1" {
cell = tableView.dequeueReusableCell(withIdentifier: "Cell1", for: indexPath)
}
else if responseSet["type"] == "2"
{
cell = tableView.dequeueReusableCell(withIdentifier: "Cell2", for: indexPath)
}
..........
..........
return cell
}
答案 4 :(得分:0)
首先 -
func numberOfSections(in tableView: UITableView) -> Int {
return 2
}
第二 -
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if (section == 0){
return 1
}
else{return 0
}
}
第三 -
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.row == 0 && indexPath.section == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier:"ImageCell") as! ImageCell
if strfeaturedImageUrl != nil
{
cell.CasinoImage.sd_setImage(with:URL(string: strfeaturedImageUrl!))
}
return cell
}
else{
let cell = tableView.dequeueReusableCell(withIdentifier:"InformationCell") as! InformationCell
return cell
}
}