Swift 更新cellForRowAtIndexPath中的单元格不';行不通
我有一个Swift 更新cellForRowAtIndexPath中的单元格不';行不通,swift,swift2,Swift,Swift2,我有一个UITableView,它允许我在选择父行时拥有子行,以便它展开 这是我的父行: 如果我选择该行,它将展开: 我想让子行元素缩进一点,这样看起来下面的项目就是子行 在我的UITableViewCell中,我在设置单元格的图标和标题时添加了以下代码: func setData(data: ExpandableCell,indexPath : NSIndexPath) { self.itemImg.image = UIImage(named: data.icon
UITableView
,它允许我在选择父行时拥有子行,以便它展开
这是我的父行:
如果我选择该行,它将展开:
我想让子行元素缩进一点,这样看起来下面的项目就是子行
在我的UITableViewCell
中,我在设置单元格的图标和标题时添加了以下代码:
func setData(data: ExpandableCell,indexPath : NSIndexPath)
{
self.itemImg.image = UIImage(named: data.icon)
self.itemTitle.text = data.title
if(!data.isParent){
// indent views
self.itemImg.frame.origin.x = 53
self.itemTitle.frame.origin.x = 85
}
if(data.childs.count == 0){
// remove the expand - collpase icon when its child row
self.expandImg.removeFromSuperview()
}
}
我遇到的问题是,第一次显示子行时,它没有缩进图标和标签。它一直工作到第二次:
第一次显示子行时(不起作用):
第二次显示子行(这次有效!)
我是否必须设置一些东西使其始终有效?我已经这样做了:
SetNeedDisplay()
但是我的行为是相同的。问题是您的逻辑不完整:
if(!data.isParent){
很好,但是如果
data.isParent
是真的呢?你不说该怎么办。记住,细胞是重复使用的。您需要准备清空已填充的单元格并重新配置它。我刚刚解决了这个问题,但仍然有相同的行为。有任何线索@matt吗?我必须找到其他解决方案,我所做的是在单元格中添加其他两个元素,一个用于缩进子行的图像和一个用于缩进子行的标签,然后在其父行时隐藏缩进,并在其子行时显示缩进。现在它似乎起作用了。。。这真是一个很奇怪的问题。这对我来说没有意义。我这样做了:如果(!data.isParent){//child indent views self.itemImg.frame.origin.x=53 self.itemTitle.frame.origin.x=85}else{//普通缩进视图self.itemmg.frame.origin.x=20 self.itemtTitle.frame.origin.x=53}听起来不错。但我对你的代码了解不够,不知道你是否在每次通过cellforrowatinexpath
…时都在这样做,我也不知道你是如何实现“它扩展的”…还有,我如何知道数据.isParent
具有正确的值?您如何知道它具有正确的值?基本上我不明白的是,您拥有世界上最伟大的调试器。为什么不调试?您可以确切地看到这些值是否以及如何设置,以及为什么设置。