以编程方式创建静态TableView / Cells

时间:2018-01-16 17:47:14

标签: ios swift uitableview

我有一个UITableView,它作为一个例子包含我根据数组内容创建的动态单元格。

我可以使用数组和indexPath的计数来填充这些数据,以便为每个项目渲染一个单元格。我对此很满意并且效果很好。

我想现在尝试以编程方式创建静态单元格

然而我立即感到难过,我该如何创造呢?我目前正在覆盖numberOfRowsInSectioncellForRowAt indexPath,如下所示:

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return items.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cellID", for: indexPath) as! ProfileCell
    cell.rowContent.text = items[indexPath.row]
    return cell
}

我怀疑我的第一个错误是dequeueReusableCell并且真的很感激任何帮助。

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你想在包含动态单元格的tableView中添加一个静态单元格。

如果是这种情况,你可以硬编码,增加返回值:

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
   return items.count+1 
}

在这种情况下,您只想添加一个静态单元格。

在cellForRowAtIndexPath中,您应该定义要添加此静态单元格的位置。在下面的示例中,它将是第一个单元格:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

   if indexPath.row == 0 {

     //should change StaticCell to the static cell class you want to use.
     let cell = tableView.dequeueReusableCell(withIdentifier: "staticCell", for: indexPath) as! StaticCell

     //hardcore attributes here, like cell.rowContent.text = "A text"
     return cell

   }

   let row = indexPath.row-1

   let cell = tableView.dequeueReusableCell(withIdentifier: "cellID", for: indexPath) as! ProfileCell
   cell.rowContent.text = items[row]
   return cell
}

它基本上是根据你想要使用的静态单元格的数量来移动项目[row]。 我不确定这是否有效,但这是我的第一次猜测(根据我的经验)。试试这个并告诉我它是否有效:)