Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么不是';我的标签藏起来了吗?_Ios_Uistackview - Fatal编程技术网

Ios 为什么不是';我的标签藏起来了吗?

Ios 为什么不是';我的标签藏起来了吗?,ios,uistackview,Ios,Uistackview,我有一个带stackView的tableViewCell。我想把它变成一个可折叠的细胞。我可以在tableView:cellForRowAt: 但是,如果我改变隐藏状态以响应单元格的点击,则屏幕上的可见性不会改变 UIView.animate(withDuration: 0.25) { [unowned self] in self.disclaimers.isHidden = !cellItem.isExpanded } cellItem.isExpanded属性与label.isHi

我有一个带stackView的tableViewCell。我想把它变成一个可折叠的细胞。我可以在tableView:cellForRowAt:

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

UIView.animate(withDuration: 0.25) { [unowned self] in
    self.disclaimers.isHidden = !cellItem.isExpanded
}
cellItem.isExpanded属性与label.isHidden属性一样正确切换。只是屏幕上没有变化

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

有什么想法吗

如果您愿意,完整项目在这里:

问题在DisclaidersCell.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)
将返回现有单元格

接下来,设置
.ishiden
的动画将不会提供所需的动画

免责声明cell.swift
->
切换扩展()
,更改:

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

    self.disclaimers.isHidden = !cellItem.isExpanded
然后,在TableViewController
中选择Rowat
功能:

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

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