Tableview单元格快速折叠和扩展值

Posted

技术标签:

【中文标题】Tableview单元格快速折叠和扩展值【英文标题】:Tableview cell collapse and expande value in swift 【发布时间】:2017-10-09 06:12:26 【问题描述】:

我想创建带有折叠和 exapnnd 的表格视图单元格。但我有一些错误。我需要一些帮助!下面是我的代码希望你不介意我是 swift2 的新手

我正在使用 swift2。

class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate  
    @IBOutlet weak var tableview: UITableView!  

想以sectionArr为标题

  let sectionArr = ["animal", "bird"] //section 
  let animalArr = ["dog", "cat"]  
  let birdArr = ["crow", "cock"]

override func viewDidLoad() 
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.


override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.


func numberOfSectionsInTableView(tableView: UITableView) -> Int 
    return sectionArr.count

//标题部分

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? 
    let headerView = UIView()
    headerView.frame = CGRectMake(0, 0, tableView.frame.size.width, 80)
   // headerView.backgroundColor = [UIColor, clearColor];
    let lblTitle = UILabel()
    lblTitle.frame = CGRectMake(0, 0, tableView.frame.size.width, 40)
    lblTitle.text = sectionArr[section]
    headerView.addSubview(lblTitle)
    return headerView
    


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
        if section == 0 
            return  animalArr.count
         else                     
            return birdArr.count
        
    

//显示视图单元格

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    let cell1:UITableViewCell=UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")

    //cell1.textLabel!.text=sectionArr[indexPath.row]
    cell1.textLabel!.text=animalArr[indexPath.row]
    cell1.textLabel!.text=birdArr[indexPath.row]

    return cell1

保存选定的索引路径行

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
    let Toy = sectionArr[indexPath.row]
    print(Toy)
    

【问题讨论】:

把错误和它们何时出现。如果您是 swift 新手,那么您应该选择 swift 4,最好是最新的 【参考方案1】:

我得到了答案!在这里,我分享了我在 tableview 中折叠和 exapnd 单元格的代码。希望对您有所帮助!

class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate 

    let sectionArr = ["Animal", "Bird"]
    let animalArr = ["dog", "cat"]
    let birdArr = ["crow", "cock"]
    var isBool = false
    var sec = 0

    @IBOutlet weak var tableview: UITableView!

    override func viewDidLoad() 
        super.viewDidLoad()
         tableview.reloadData()
    

    override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    

    func numberOfSectionsInTableView(tableView: UITableView) -> Int 
        return sectionArr.count
    

    func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? 
        let headerView = UIView()
        headerView.frame = CGRectMake(0, 0, tableview.frame.size.width, 80)
      //create lable dynamically
        let lblTitle = UILabel()
        lblTitle.frame = CGRectMake(0, 0, tableview.frame.size.width, 40)
        lblTitle.text = sectionArr[section]
        headerView.addSubview(lblTitle)

      //create button dynamically
        let btn: UIButton = UIButton(frame: CGRectMake(0, 0, tableview.frame.size.width, 40))
        btn.setTitle(sectionArr[section], forState: UIControlState.Normal)
        btn.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside)
        btn.tag = section              // change tag property
        headerView.addSubview(btn)
        return headerView
    

    func buttonAction(sender: UIButton!)
    
        if isBool == false 
            sec = sender.tag
            isBool = true
            tableview.reloadData()
         else 
            sec = 0
            isBool = false
            tableview.reloadData()
        
    

  func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
        if section == 0 
            if isBool && sec == 0 
                return animalArr.count
             else 
                return 0
            
         else
            if isBool && sec == 1 
                return birdArr.count
             else 
                return 0
            

        
    

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
   let cell1:UITableViewCell=UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")

        if(indexPath.section == 0)
        
            cell1.textLabel!.text=animalArr[indexPath.row]
        
        else
        
            cell1.textLabel!.text=birdArr[indexPath.row]
        
        return cell1
    

【讨论】:

以上是关于Tableview单元格快速折叠和扩展值的主要内容,如果未能解决你的问题,请参考以下文章

滚动到另一个时 TableView 折叠单元格:奇怪的行为

如何在Xamarin.iOS本机平台中扩展tableview单元格?

展开和折叠 tableview 单元格

Accordion 表格单元格 - 用于展开和折叠 ios

通过使用约束自行调整大小来展开和折叠 TableView 单元格

TableView 在 Swift 中展开和折叠单元格