Swift:如何将单元格发送到 TableView 中的正确部分?

Posted

技术标签:

【中文标题】Swift:如何将单元格发送到 TableView 中的正确部分?【英文标题】:Swift: How to send cell into correct section in TableView? 【发布时间】:2019-02-23 22:00:04 【问题描述】:

我有简单的 TableView 和唯一的自定义单元格。 根据一些布尔值,我需要: 1. 如果 bool 为真,则在第 0 节中显示单元格; 2. 如果 bool 为 false,则在第 1 节中显示单元格。

找不到正确的方法,需要帮助。 谢谢!

【问题讨论】:

【参考方案1】:

这可以通过在表视图的数据源中实现适当的逻辑并在布尔值更改时在表视图上调用适当的更新方法来完成。

基本示例:

var showSomethingInSectionZero = true

func numberOfSections(in tableView: UITableView) -> Int 
    return 2


func numberOfRows(inSection section: Int) -> Int 
    if section == 0, showSomethingInSectionZero 
        return 1
     else if section == 1, !showSomethingInSectionZero 
        return 1
    
    return 0


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

并更新布尔和表格视图:

showSomethingInSectionZero = false
tableView.reloadData()

或者做动画:

showSomethingInSectionZero = false
tableView.moveRow(at: IndexPath(row: 0, section: 0), 
      to: IndexPath(row: 0, section: 1))

这是它的基础知识,如果您想要更深入的答案,您应该提供更多上下文和代码。

【讨论】:

非常感谢,vector是正确的,但我还是没有理解。首先,我正确地制作了 numberOfSections 和 numberOfRows。我对 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) 很感兴趣。 我需要实现 cellForRowAt indexPath 类似的东西: if bool == true prepare cell for section 0 else prepare cell for section 1 我终于明白基本概念了,多谢一次【参考方案2】:

你可以关注cellForRow:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    if let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? customCell 
        if indexPath.section == 0 
            cell.controlShowCell = controlShowCell
            return cell
         else if indexPath.section == 1 
            cell.controlShowCell = !controlShowCell
            return cell
        
    
    return UITableViewCell()

【讨论】:

以上是关于Swift:如何将单元格发送到 TableView 中的正确部分?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式将不同单元格的不同图像添加到 tableView (Swift)

如何以编程方式将不同单元格的不同图像添加到 tableView (Swift 3)

如何在 swift 3 中将图像从服务器加载到 tableView 单元格?

如何在 iOS Swift 中将选定的 tableView 单元格保存到数组中?

如何将静态单元格快速拖动到 tableView 中?

如何使用 tableView.dequeueReusableCell 以编程方式将单元格样式添加到单元格?