当前位置: 首页 > 面试题库 >

展开和折叠tableview单元格

燕和裕
2023-03-14
问题内容

我能够展开和折叠单元格,但我想在UITableViewCell内调用函数(展开和折叠)以更改按钮标题。

iphone
5

导入UIKit

类MyTicketsTableViewController:UITableViewController {

    var selectedIndexPath:NSIndexPath?
    var extraHeight:CGFloat = 100

    覆盖func viewDidLoad(){
        super.viewDidLoad()
    }

    覆盖func didReceiveMemoryWarning(){
        super.didReceiveMemoryWarning()
        //处理所有可以重新创建的资源。
    }

    覆盖func tableView(tableView:UITableView,numberOfRowsInSection部分:Int)-> Int {
        返回5
    }

    覆盖func tableView(tableView:UITableView,cellForRowAtIndexPath indexPath:NSIndexPath)-> UITableViewCell {
        让cell = tableView.dequeueReusableCellWithIdentifier(“ cell”,forIndexPath:indexPath)为!MyTicketsTableViewCell
        返回单元
    }

    覆盖func tableView(tableView:UITableView,heightForRowAtIndexPath indexPath:NSIndexPath)-> CGFloat {
        if(selectedIndexPath!= nil && indexPath.compare(selectedIndexPath!)== NSComparisonResult.OrderedSame){
            返回230 + extraHeight
        }

        回报230.0
    }

    覆盖func tableView(tableView:UITableView,didSelectRowAtIndexPath indexPath:NSIndexPath){
        if(selectedIndexPath == indexPath){
            selectedIndexPath =无
        }其他{
            selectedIndexPath = indexPath
        }

        tableView.beginUpdates()
        tableView.endUpdates()
    }
}




导入UIKit

类MyTicketsTableViewCell:UITableViewCell {

    @IBOutlet弱var expandButton:ExpandButton!
    @IBOutlet弱var detailsHeightConstraint:NSLayoutConstraint!

    var defaultHeight:CGFloat!

    覆盖func awakeFromNib(){
        super.awakeFromNib()

        defaultHeight = detailsHeightConstraint.constant

        expandButton.button.setTitle(“ TAP FOR DETAILS”,forState:.Normal)
        detailsHeightConstraint.constant = 30
    }

    func expand(){
        UIView.animateWithDuration(0.3,延迟:0.0,选项:.CurveLinear,动画:{
            self.expandButton.arrowImage.transform = CGAffineTransformMakeRotation(CGFloat(M_PI * 0.99))
            self.detailsHeightConstraint.constant = self.defaultHeight
            self.layoutIfNeeded()

            },完成:{已完成
                self.expandButton.button.setTitle(“ CLOSE”,forState:.Normal)
        })
    }

    func crash(){
        UIView.animateWithDuration(0.3,延迟:0.0,选项:.CurveLinear,动画:{
            self.expandButton.arrowImage.transform = CGAffineTransformMakeRotation(CGFloat(M_PI * 0.0))
            self.detailsHeightConstraint.constant = CGFloat(30.0)
            self.layoutIfNeeded()

            },完成:{已完成
                self.expandButton.button.setTitle(“ TAP FOR DETAILS”,forState:.Normal)
        })
    }

}

问题答案:

如果你想在细胞获得更大的身体,那么,你有你的店IndexPath,在heightForRow:使用:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    if selectedIndexPath == indexPath {
      return 230 + extraHeight
    }
    return 230.0
}

然后,当您想在didSelectRow中展开一个时:

selectedIndexPath = indexPath
tableView.beginUpdates
tableView.endUpdates

编辑

这将使单元动画自己变大,您不需要单元中额外的动画块。

编辑2

 override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        if(selectedIndexPath == indexPath) {
          selectedIndexPath = nil

          if let cell = tableView.cellForRowAtIndexPath(indexPath) as? MyTicketsTableViewCell {
            cell.collapse()
          }
          if let cell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow:indexPath.row+1, section: indexPath.section) as? MyTicketsTableViewCell {
            cell.collapse()
          }
        } else {
          selectedIndexPath = indexPath

          if let cell = tableView.cellForRowAtIndexPath(indexPath) as? MyTicketsTableViewCell {
              cell.expand()
          }

          if let cell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow:indexPath.row+1, section: indexPath.section) as? MyTicketsTableViewCell {
             cell.expand()
          }
        }

        tableView.beginUpdates()
        tableView.endUpdates()
    }


 类似资料:
  • I',试图构建一个扩展/折叠菜单。 我有一个主导航栏,里面有3个子菜单。默认情况下,子菜单的高度为50px,但一旦点击,这个高度就会变为200px。再点击一下,让它塌陷回原来的50px。 让我烦恼的是,当我展开subMenu1,然后展开Submenu2-Submenu1保持展开,并且我希望它在第二个子菜单被选中时折叠。 这是我的代码; 和jQuery: 我想知道什么功能或什么使用来确保一旦任何子菜

  • 我有一个带有多个视图保持器的RecyclerView适配器。每个ViewHolder都有一个标题TextView和一个嵌套的RecyclerView,工作正常。但我想实现一个扩展/折叠函数,这样嵌套的RecyclerView就可以隐藏,直到单击标题为止。我使用此方法RecyclerView展开/折叠项目。它可以工作,但当我单击标题以展开嵌套的RecyleView时,recyclerview不会填充

  • 展开或折叠代码 操作步骤: 菜单栏:Code —> Folding —> Expand 快捷键: Mac: command + “+” Windows\/Linux: Ctrl + "+" 展开或折叠代码 操作步骤: 菜单栏:Code —> Folding —> Collapse 快捷键: Mac: command + “-” Windows\/Linux: Ctrl + "-" 展开或折叠当前代

  • 了解如何在 Dreamweaver 中折叠和展开代码以查看文档的各个部分而无需滚动。 您可以折叠和展开代码片段,以便无需滚动即可查看文档的不同部分。 例如,若要查看 head 标签中所有应用于页面下方较远处的一个 div 标签的 CSS 规则,请折叠 head 标签和 div 标签之间的所有代码,以便同时看到这两部分代码。 您可以选择要折叠的代码部分进行折叠。还可以在 HTML、PHP、XML 以

  • 本文向大家介绍iOS开发中TableView类似QQ分组的折叠与展开效果,包括了iOS开发中TableView类似QQ分组的折叠与展开效果的使用技巧和注意事项,需要的朋友参考一下 类似QQ分组的样子,实现tableView的折叠与展开。其实要做这个效果我先想到的是在tableView中再嵌套多个tableView,这个想法实现起来就有点难了。 所以还是换个思路,把tableView的HeaderV

  • 本文向大家介绍js实现简单折叠、展开菜单的方法,包括了js实现简单折叠、展开菜单的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js实现简单折叠、展开菜单的方法。分享给大家供大家参考。具体如下: 这里介绍的是意乱会折叠、展开的菜单导航栏,很老时候写的,CSS没有做美化,如果想用的朋友就自己美化吧。 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js