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

单击时如何更改单个单元格的高度?

鲍向笛
2023-03-14
问题内容

单击时,我必须调整tableView的一行的大小。我该怎么做?有人可以帮助我吗?

我的视图控制器类:

class DayViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet var daysWorkPointTable: UITableView

    override func viewDidLoad() {
        super.viewDidLoad()

        var nipName = UINib(nibName: "daysWorkPointsCell", bundle: nil)

        self.daysWorkPointTable.registerNib(nipName, forCellReuseIdentifier: "daysWorkCell")
    }

    func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
        return 1
    }

    func tableView(tableView:UITableView!, heightForRowAtIndexPath indexPath:NSIndexPath) -> CGFloat {
        return 75
    }

    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
        var cell = tableView.dequeueReusableCellWithIdentifier("daysWorkCell", forIndexPath: indexPath) as daysWorkPointsCell

        return cell
    }

    func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {

    }
}

问题答案:

首先,您必须跟踪属性中当前选定单元格的indexPath:

var selectedCellIndexPath: NSIndexPath?

它应该是可选的,因为您不能选择任何单元格。接下来让我们声明选定状态和未选定状态的高度(将值更改为所需的值):

let selectedCellHeight: CGFloat = 88.0
let unselectedCellHeight: CGFloat = 44.0

现在您必须实现tableView(_:, heightForRowAtIndexPath:)

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    if selectedCellIndexPath == indexPath {
        return selectedCellHeight
    }
    return unselectedCellHeight
}

现在,在您的tableView(_:, didSelectRowAtIndexPath:)方法中,您必须检查是否选中了选定行或未选定行:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    if selectedCellIndexPath != nil && selectedCellIndexPath == indexPath {
        selectedCellIndexPath = nil
    } else {
        selectedCellIndexPath = indexPath
    }

    tableView.beginUpdates()
    tableView.endUpdates()

    if selectedCellIndexPath != nil {
        // This ensures, that the cell is fully visible once expanded
        tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: .None, animated: true)
    }
}

beginUpdates()endUpdates()电话是给你一个动画的高度变化。

如果要更改高度更改动画的持续时间,可以将beginUpdates()和封装endUpdates()在动画块中UIView.animationWithDuration(...),并将其设置为所需的任何值。

您可以签出演示该代码的示例项目。



 类似资料:
  • 问题内容: 我有一个由用户创建的单元格调用的表视图。每个单元都有文本视图。我想通过“文本视图”的内容更改单元格的高度。这是我尝试的: 问题答案: 绑定您与来自四面八方的使用边际约束。( 前置,顶部和底部的约束 ) 禁用textView滚动 在 viewDidLoad()中 添加以下内容。 这将使您的单元格大小根据您的textview内容大小。 看一下结果: 您无需编写 heightForRowAt

  • 有人知道如何更改ZK网格中单元格的背景色吗?在网上搜索了几个小时,找不到太多。静态单元格不是问题,但这是动态渲染的网格。 计划是将某些细胞涂成红色或黄色,因为我想突出显示特定的值。 我的Zul: 我的虚拟机:

  • 问题内容: 我的折扣列有一个自动完成功能,其值来自另一个json变量。 这是我的json数组,折扣数据来自此数组。 What I would like to do is (1)更改折扣值后,“ 费用”列应 根据此公式进行更改 值0.145来自json的id列。 (2)在更改折价后,ExtCost列应 据此更改。 数量是最左侧的单元格。 这是我的网格相关代码。 问题答案: 您没有提供有效的演示,但希

  • 我正在做一个使用javafx多种输入类型的java项目。但我有一个扼杀组合框的行为,因为我使用的标签上的图像(ImageView)。 1-组合框看起来在白色!但我需要它在黑色。 每次我选择一个项目。 3-它消失了!!! 下面是我的代码: 和 编辑: 读了这篇文章后,我知道我的方法完全错误,强烈不推荐。。如果有人有其他想法在组合框中放置国家国旗,请帮助!! 谢谢(抱歉我的英语不好)

  • 我有一个jtable保存账本文件记录并将它们发送出去。

  • 嗨,在我的应用程序中,我有一个在Tabview中显示带有描述的prodcuts的要求。为了实现这一点,我在Tabview cell content视图上添加了两个satckviews。两个stackviews都保存标签,一个标签有prodcut名称,另一个标签有description。在应用程序发布时,应用程序的单元格高度默认为100,但当我选择单元格时,我想在单元格中显示完整的描述以及产品名称,