我正在尝试在同一个ViewController
中返回两个不同的自定义单元格而没有任何部分。问题来自方法numberOfRowsInTableView
。如何返回两个单元格中的项目数?我在numberOfRowsInSection
中尝试了以下代码:
var indexPath = NSIndexPath()
if indexPath.row == 2 || indexPath.row == 4 {
return abc.count
} else {
return xyz.count
}
但是应用程序因错误而崩溃:
***因未捕获的异常终止应用程序' NSInternalInconsistencyException',原因:'与UITableView一起使用的索引路径无效。传递给表视图的索引路径必须包含指定节和行的两个索引。如果可能,请在UITableView.h中使用NSIndexPath上的类别。'
答案 0 :(得分:1)
如果您只有一个部分,那么numberOfRowsInSection应该只返回您在UITableView中将拥有的单元格总数。如果这是固定的,只要它是动态的(即根据数组)返回数字然后返回动态大小(数组的大小)。
答案 1 :(得分:0)
如果你只有一个由两个不同阵列组成的细胞组成的部分,则该部分中的细胞数是两个数组的总和。长度。无论细胞的顺序如何(无论是A,B,A,B,A,B ......还是A A A A B B B B)。
答案 2 :(得分:0)
对于这种情况,我们无法返回两个多个自定义单元格计数。因此,我们需要计算两个单元格的元素,其元素更大,然后返回该计数。
试试这个
var abc = [String]() //You can have any datatype of array
var xyz = [String]()
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return (abc.count > xyz.count) ? abc.count : xyz.count
}
在这里,要在两个自定义单元格中显示值,您需要在cellForRowAtIndexPath
函数中以这种方式实现。
func tableView(tableViewData: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = tableViewData.dequeueReusableCellWithIdentifier("cell")! as! CustomCellClass
if indexPath.row < abc
{
cell.label1.text = abc[indexPath.row]
}
else
{
cell.label1.text = ""
}
if indexPath.row < self.xyz.count
{
cell.label2.text = xyz[indexPath.row]
}
else
{
cell.label2.text = ""
}
return cell
}
希望它适合你。