不同 - UITableViewCells 的重复模式

Different - Repeated Pattern of UITableViewCells

我有一个 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
...

有什么实现方法吗?

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

indexPath.row 模 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
    }

} 

要实现这一点,只需按照以下步骤操作(我假设您已经在故事板中制作了四个原型单元):

  1. 打开故事板,select 第一个单元格(确保 UITableViewCell 是 selected,而不是它的内容视图)
  2. 在情节提要右侧的属性检查器中,在标有重用标识符的框中输入自定义标识符以标识此单元格(对于此示例,我我将其命名为 cell1)
  3. 对其他三个单元格重复此操作(这些后续单元格将具有标识符 cell2、cell3 和 cell4
  4. 回到UITableViewDataSourceclass,覆盖函数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
    

只需将这段代码放在第4步提到的函数中,就可以构建和运行。希望这有效!