ios - 为什么我的标签没有隐藏?

标签 ios uistackview

我有一个带有 stackView 的 tableViewCell。我试图让它成为一个可折叠的单元格。我可以在 tableView:cellForRowAt 期间成功设置第二个标签的隐藏状态:

但是,如果我响应单元格的点击而更改隐藏状态,则屏幕上的可见性不会改变。

UIView.animate(withDuration: 0.25) { [unowned self] in
    self.disclaimers.isHidden = !cellItem.isExpanded
}

cellItem.isExpanded 属性与标签 .isHidden 属性一样正确切换。只是屏幕上没有变化。

我知道这已经在主线程上,因为在主线程上调用了 tableView:didSelectRowAt: 。但为了掩饰自己,我尝试使用 DispatchQueue.main.async { } 调用而不是 UIView.animate 来包装该行。没有变化。

有什么想法吗?

如果您愿意,完整的项目就在这里:https://github.com/AaronBratcher/TableViewTester

问题在 DisclaimersCell.swift 中。第33行

最佳答案

几个问题...

除了 cellForRowAt 之外,您不应该在任何地方调用 .dequeueReusableCell。您在 TableViewController.swift -> didSelectRowAt 中执行此操作...这会创建单元格的实例,不是 表中的现有实例。将您的 guard 行更改为:

    guard var cellItem = helper.cellForRowAtIndexPath(indexPath) as? TableViewExpandableCellItem
        , let cell = tableView.cellForRow(at: indexPath) as? TableViewExpandableCell
        , cellItem.shouldExpand
        else { return }

这样,tableView.cellForRow(at: indexPath) 将返回现有单元格。

接下来,对 .isHidden 设置进行动画处理不会为您提供所需的动画。

DisclaimersCell.swift -> toggleExpansion() 中,更改:

    UIView.animate(withDuration: 0.25) { [unowned self] in
        self.disclaimers.isHidden = !cellItem.isExpanded
    }

简单地说:

    self.disclaimers.isHidden = !cellItem.isExpanded

然后,在 TableViewController didSelectRowAt 函数中:

    cellItem.isExpanded = !cellItem.isExpanded
    cell.toggleExpansion(tableViewCellItem: cellItem)

    tableView.beginUpdates()
    tableView.endUpdates()

这将告诉单元格隐藏/显示标签,并将 .beginUpdates()endUpdates() 配对将触发重新计算表格中的行高,并设置重绘动画。

关于ios - 为什么我的标签没有隐藏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44206818/

相关文章:

ios - 将 subview 添加到 uistackview 不适用于按钮单击

swift - 取消隐藏 stackview 的一部分时,stackview 的单元格不会扩展

ios - iPhone - 当旋转动画 > 90 度时 UIImageView 移动

ios - 以编程方式展开 Segue?

android - flutter_session 和 shared_preferences 在 flutter 中不能一起工作?

ios - 在 ScrollView 中使用堆栈 View 并尊重安全区域插图

ios - UIStackView 内的 UITextField 宽度约束问题

ios - 如何阻止 iOS 将小指向直角三角形字符转换为矩形盒装三角形符号?

ios - 数组中的 Swift 不同类型的泛型

ios - 使用 ScrollView 时自动布局和 StackView 的问题