【问题标题】:Hide/show cells in UITableView?在 UITableView 中隐藏/显示单元格?
【发布时间】:2015-06-25 09:57:49
【问题描述】:

我在 IB 中创建了一个 UITableView。此视图包含 5 个部分,每个部分包含一些单元格。某些部分中的第一个单元格为最终用户提供了显示/隐藏属于同一部分的其余单元格的选项。

到目前为止我的代码:

import UIKit

class SettingsVC: UITableViewController {

    @IBOutlet var showCallForwardSwitch: UISwitch?

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func toggleValueChanged(sender: UISwitch) {

        if showCallForwardSwitch!.on {
            println("switch is on")
        } else {
            println("switch is off")
        }

        tableView.reloadData()
    }  
}

所以只有一个 IBOutlet 和一个 IBAction。我可以通过 toogleValueChanged 函数获取事件,但是我不知道从现在开始该怎么做。我需要使用哪些方法?

【问题讨论】:

    标签: ios swift uitableview cocoa-touch


    【解决方案1】:
    override func tableView(tableView:UITableView, heightForRowAtIndexPath indexPath:NSIndexPath)->CGFloat
    {
        let cell:DetailCell = self.tableView.cellForRowAtIndexPath(indexPath) as DetailCell // ????????
    
        var height:CGFloat = 84.0;
    
        if ("toggel on"){
            height = 84.0;
        }
        else{
            height = 0.0;
        }
    
        return height;
    }
    

    【讨论】:

    • 什么是DetailCell?你怎么知道你在正确的部门工作?
    【解决方案2】:

    您不想因为一个部分而重新加载整个 tableView。我建议使用deleteRowsAtIndexPaths(_:withRowAnimation:) 只保留第一个单元格,以便用户能够再次显示该部分的其余部分。更新您的数据源并使用一些标志,以便您知道不显示哪个单元格。

    【讨论】:

      猜你喜欢
      • 2014-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多