Swift 来自Nimb的唤醒不';无法在TableView重新加载数据时调用

Swift 来自Nimb的唤醒不';无法在TableView重新加载数据时调用,swift,uitableview,Swift,Uitableview,我有一个iPad TabBar导航应用程序,在OrderViewController中,我在视图的左侧有一个tableview,在视图的右侧有一个插座,就像在一种拆分视图控制器中一样。单击表格视图的单元格时,它会在另一半屏幕上显示详细信息。当我为A/B测试引入两种不同的颜色方案时,我使用一个开关来执行颜色的更改。使用tableView的单元格进行颜色切换失败。在视图中添加reloadData()不会解决问题。 所有内容都会更新,除了单元格,它们会保持第一次创建时的颜色。 我在整个阶段添加了打印,

我有一个iPad TabBar导航应用程序,在
OrderViewController
中,我在
视图的左侧有一个tableview,在
视图的右侧有一个插座,就像在一种拆分视图控制器中一样。单击
表格视图
单元格
时,它会在另一半屏幕上显示详细信息。当我为A/B测试引入两种不同的颜色方案时,我使用一个开关来执行颜色的更改。使用
tableView
单元格进行颜色切换失败。在
视图中添加
reloadData()
不会解决问题。 所有内容都会更新,除了单元格,它们会保持第一次创建时的颜色。 我在整个阶段添加了打印,并检测到单元格的
awakeFromNimb
仅在第一次被调用。如何在
tableView.reloadData()上调用它?一如既往,非常感谢

awakeFromNib():

视图将出现():


使用tableView委托willDisplayCell


使用tableView委托willDisplayCell


简而言之,你不知道。从nib唤醒将只调用一次。如果你想更新你的UI,只要在你想调用重载数据时调用configureUi()。@andromedainiative
configureUi()
在cells自定义类中,我在重载数据时如何调用它?你可以使用tableView委托。那里有一个叫做willDisplayCell的函数。在这种情况下,您可以调用cells自定义方法。对于
UITableViewCell
,在第一次创建单元格时调用
awakeFromNib
方法,在即将重用单元格时调用方法
prepareforeuse
,包括使用“重新加载数据”时。因此,您可以将单元格的调用
configureUI
放在这两种模式中。简短的回答是您不需要的。从nib唤醒将只调用一次。如果你想更新你的UI,只要在你想调用重载数据时调用configureUi()。@andromedainiative
configureUi()
在cells自定义类中,我在重载数据时如何调用它?你可以使用tableView委托。那里有一个叫做willDisplayCell的函数。在这种情况下,您可以调用cells自定义方法。对于
UITableViewCell
,在第一次创建单元格时调用
awakeFromNib
方法,在即将重用单元格时调用方法
prepareforeuse
,包括使用“重新加载数据”时。因此,您可以将单元格的调用
configureUI
放在这两个单元格中。我必须做一些小的更改,但仍然不能100%工作:我必须忽略
覆盖
,也忽略
索引
,因为它在尝试多次删除同一单元格并返回ÙITableViewCell()时抛出了一个错误`意外的非空返回它现在只在滚动时创建具有正确颜色方案的新单元格,在向后滚动时,某些单元格不会更新。。有什么想法吗?@andromedainitiative calling
configureUi()
cellForRow
中似乎工作得很好,但我想使用
willDisplayCell
作为正确的方法,对我以前的评论有什么建议吗?我认为在cellForRow或will display cell上使用都可以。可以将willDisplayCell视为在重新使用之前修复单元的地方。cellForRow更多的是indexpath的一次性构造函数。我必须做一些小的修改,但仍然不能100%工作:我必须忽略
覆盖
,也忽略
indexPaht
,因为它会抛出一个错误,试图多次删除同一个单元格,并返回ÙITableViewCell()`意外的非空返回它现在只在滚动时创建具有正确颜色方案的新单元格,在向后滚动时,某些单元格不会更新。。有什么想法吗?@andromedainitiative calling
configureUi()
cellForRow
中似乎工作得很好,但我想使用
willDisplayCell
作为正确的方法,对我以前的评论有什么建议吗?我认为在cellForRow或will display cell上使用都可以。可以将willDisplayCell视为在重新使用之前修复单元的地方。而cellForRow更像是该索引的一次性构造函数。
override func awakeFromNib() {
        super.awakeFromNib()
        configureUi()
    }
override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(true)
        self.configureFetchedResultsController()
        orderTableView.delegate = self
        orderTableView.dataSource = self
        configureUI()
        orderTableView.reloadData()
    }
class MyCustomVC: UITableViewDelegate {

    override func tableView(_ tableView: UITableView, 
        willDisplay cell: UITableViewCell, 
           forRowAt indexPath: IndexPath) {

           guard var cell = tableView.dequeueReusableCell(withIdentifier: "yourReuseIdentifier", for: indexPath) as? YourCustomCell else {
               return UITableViewCell()
           }

           cell.configureUi()
    }

}