使用 moveRow(at:,to:) 时如何更改 UITableViewCell 的不透明度和颜色

Posted

技术标签:

【中文标题】使用 moveRow(at:,to:) 时如何更改 UITableViewCell 的不透明度和颜色【英文标题】:How can I change opacity and color of UITableViewCell when i use moveRow(at:,to:) 【发布时间】:2020-06-19 03:05:03 【问题描述】:

这是我的代码。我的 swift 版本是 4。

tableview.beginUpdates() 
tableview.moveRow(at: IndexPath(row: indexPath.row, section: 0), to: IndexPath(row: 0, section: 2))
tableview.endUpdates()

tableview 的更改部分存在问题。因为每个部分都有其他不透明度和颜色,所以我希望在使用 moveRow(at:,to:) 后立即改变不透明度和颜色。

但我找不到我该怎么做。请帮帮我!

【问题讨论】:

【参考方案1】:

假设您有一个自定义 UITableViewCell 类。您可以在该类中编写一个函数来操作单元格的外观。假设您在该类中有一堆插座,您可以创建一个更改这些视图元素的函数。 alpha 和颜色等。

在 cellForRowAtIndexPath 方法内的单元格上调用此函数:

let cell = tableView.dequeueReusableCell(withIdentifier: "MyCell", for: indexPath) as! MyCustomCellClass
cell.apperanceFunction(alpha: Double, background: UIColor)

在 if 或 switch 内的特定部分,我必须假设你有。当您将单元格移动到该部分时,应再次调用 cellForRowAtIndexPath 并且应在该特定单元格上调用该函数。如果没有,您始终可以使用 ViewController 中的 cellForRow(at: indexPath) 函数手动找到该单元格并专门调用该函数。

希望这是有道理的...但是当这是您提供的唯一代码时,这有点困难。

【讨论】:

感谢您的回答。你的意思是每当我使用 moveRow(at:,to:) 移动单元格时,我必须调用 cellForRowAtIndexPath,对吗?如果我理解正确,我想知道如何调用 cellForRowAtIndexPath。据我所知,创建 TableView 时会调用 cellForRowAtIndexPath 。但我不知道如何手动调用它。现在,我正在使用 reloadSections。我不确定这是不是正确的方法。 我认为 cellForRowAtIndexPath 会被自动调用,但一些研究告诉我它不会;) - 所以你在重新加载部分的方法是你想要做的。 - 但是,如果您不需要更新整个部分,您也可以只使用 reloadRows(at:with:) 并更新该特定行。这也应该只为该特定行调用 cellForRowAtIndexPath。 否则我的意思是如果你在你的单元格类中有一个函数,你总是可以尝试找到具有“函数”cellForRowAtIndexPath 的单元格。然后调用该函数。示例:让 cellToFind = tableView.cellForRow(at: IndexPath) as? CustomCellClass 然后调用该特定函数,例如: cellToFind.apperanceFunction() developer.apple.com/documentation/uikit/uitableview/… 但是上面带有 reloadRows 或 reloadSections 的解决方案似乎更干净。奇怪的是它不会自动执行此操作。如果您删除并插入该行,它将;)

以上是关于使用 moveRow(at:,to:) 时如何更改 UITableViewCell 的不透明度和颜色的主要内容,如果未能解决你的问题,请参考以下文章

在使用 Linq To SQL 时,如果其他列没有更改,如何避免设置某些列?

MYSQL:Lost connection to MySQL server at 'reading initial communication packet', system erro

如何在代码中定义/更改 Linq To Sql 的映射

2013 - Lost connection to MySQL server at 'reading initial communication packet' 错误解决

关于svn获取获取文件时 Unable to connect to a repository at URL"https://..."执行上下文错误:参数错误

Redisi启动时会报:Could not connect to Redis at 127.0.0.1:6379: Connection refused