不同 - UITableViewCells的重复模式

时间:2015-05-25 19:37:38

标签: uitableview swift custom-cell

我有一个UITableView,其中有四个不同的自定义UITableViewCell。我需要按如下方式重复每个单元格类型:

row 0 -> cell1
row 1 -> cell2
row 2 -> cell3
row 3 -> cell4
row 4 -> cell1
row 5 -> cell2
row 6 -> cell3
row 7 -> cell4
row 8 -> cell1
...

任何想法如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

要实现这一目标,请按照以下步骤操作(我假设您在故事板中制作了四个原型单元格):

  1. 打开故事板,然后选择第一个单元格(确保选中UITableViewCell,而不是其内容视图)
  2. 在情节提要的右侧,在属性检查器中,键入自定义标识符以在标有重用标识符的框中标识此单元格(对于此示例,我将命名为的小区1
  3. 对其他三个单元格重复此操作(这些后续单元格将具有标识符 cell2,cell3和cell4
  4. 返回UITableViewDataSource班级,覆盖函数tableView: cellForRowAtIndexPath
  5. 在此函数中,将indexPath.row的模数(%)设为4.如果此值为0,则tableView.dequeueReusableCellWithIdentifier("cell1")如果为1,则替换它与cell2,等等。在代码中,步骤5看起来像这样 -

    switch indexPath.row % 4 {
    
    case 0:
    let cell = tableView.deqeueReusableCellWithIdentifier("cell1")
    
    case 1:
    let cell = tableView.deqeueReusableCellWithIdentifier("cell2")
    
    case 2:
    let cell = tableView.deqeueReusableCellWithIdentifier("cell3")
    
    case 3:
    let cell = tableView.deqeueReusableCellWithIdentifier("cell4")
    
    }
    
    return cell
    
  6. 只需将此代码放在步骤4中提到的函数中,即可构建并运行。希望这有效!

答案 1 :(得分:0)

要在cellForRowAtIndexPath中创建单元格,其中索引路径作为参数传递。使用indexPath.row,您可以计算出需要使用的单元格类型。

indexPath.row modulo 4给出了单元格编号类型。

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cellNumber = indexPath.row % 4

    if cellNumber == 0 {  // row 0, 4, 8, ...
        // create cell1
    }
    else if cellNumber == 1 {  // row 1, 5, 9, ...
        // create cell2
    }
    else if cellNumber == 2 {  // row 2, 6, 10, ...
        // create cell3
    }
    else if cellNumber == 3 {  // row 3, 7, 11, ...
        // create cell4
    }

}