Swift 为什么当我的tableView跳出视图时单元格会向右移动?
我添加了一个带有所有结构及其子结构的表视图,以方便导航。但是每次我的表视图从我的视图中跳出时,我的单元格都会向右移动。我上传了一篇文章来说明我的问题。 是完整的源代码Swift 为什么当我的tableView跳出视图时单元格会向右移动?,swift,Swift,我添加了一个带有所有结构及其子结构的表视图,以方便导航。但是每次我的表视图从我的视图中跳出时,我的单元格都会向右移动。我上传了一篇文章来说明我的问题。 是完整的源代码 有人知道为什么会发生这种情况?表视图单元格被重用。这意味着,当您调用dequeueReusableCell(with identifier:)时,有时旧的单元格将被排挤出队列。每当表格视图需要显示一个新单元格时,它都会调用cellForRowAt,然后在其中配置一个单元格并返回它。您需要记住,您正在配置的单元可能是旧单元 有问
有人知道为什么会发生这种情况?表视图单元格被重用。这意味着,当您调用
dequeueReusableCell(with identifier:)
时,有时旧的单元格将被排挤出队列。每当表格视图需要显示一个新单元格时,它都会调用cellForRowAt
,然后在其中配置一个单元格并返回它。您需要记住,您正在配置的单元可能是旧单元
有问题的代码行如下所示:
cell.spacingViewWidthConstraint.constant = cell.spacingViewWidthConstraint.constant * CGFloat(self.depthDictionary[structure.id]!)
如果cell
是一个旧单元格,则其spacingViewWidthConstraint.constant
在第一次配置时就已经设置好了,因此现在再次增加它,当它第二次显示时,这会导致它进一步向右移动
您应该将cell.spacingviewidthconstraint.constant
替换为一个(命名的)常量,例如10
(或者无论cell.spacingviewidthconstraint.constant
的初始值是什么),这样每次调用该方法时,变量都不会设置得越来越大:
cell.spacingViewWidthConstraint.constant = 10 * CGFloat(self.depthDictionary[structure.id]!)
cell.spacingViewWidthConstraint.constant = cell.spacingViewWidthConstraint.constant * CGFloat(self.depthDictionary[structure.id]!)
cell.spacingViewWidthConstraint.constant = 10 * CGFloat(self.depthDictionary[structure.id]!)