这是我显示和隐藏行的代码。我基本上设置了隐藏属性,如Eureka FAQ中所述。如果这是设置隐藏属性以显示/隐藏行的正确方法,请告诉我。
form
+++ Section("main")
<<< ButtonRow () { (row: ButtonRow) -> Void in
row.tag = "sampleRow"
if self.shouldHide {
print("hide exampleRow")
row.hidden = true
} else {
print("show exampleRow")
row.hidden = false
}
}
.cellSetup ({ [unowned self] (cell, row) in
row.title = "Title Example"
row.cell.tintColor = .red
})
.cellUpdate({ [unowned self] (cell, row) in
if self.shouldHide {
print("cellUpdate: hide exampleRow \(self.shouldHide)")
row.hidden = true
} else {
print("cellUpdate: show exampleRow \(self.shouldHide)")
row.hidden = false
}
})
.onCellSelection({ (cell, row) in
print("It's Me!")
})
稍后在代码中,我将变量shouldHide
更新为true或false并调用tableView.reloadData(),它会调用cellUpdate块但没有任何反应。有人可以帮忙吗?这是我的项目,你可以克隆和重现这个问题。 https://github.com/cuongta/testEurekaHideShow
再次感谢!
答案 0 :(得分:3)
在EurekaForm
中隐藏行或甚至某个部分的正确方法是修改.hidden
属性并在此之后调用.evaluateHidden()
方法,这样为了让代码工作,您需要执行此操作修改后,此任务不需要shouldHide
var
用这个替换.onCellSelection
回调方法
.onCellSelection({ (cell, row) in
print("It's Me!")
row.hidden = true
row.evaluateHidden()
})
form +++ Section("main")
<<< ButtonRow () { (row: ButtonRow) -> Void in
row.tag = "sampleRow"
}
.cellSetup ({ (cell, row) in
row.title = "Title Example"
row.cell.tintColor = .red
})
.onCellSelection({ (cell, row) in
print("It's Me!")
row.hidden = true
row.evaluateHidden()
})
如果您想隐藏任何其他上下文中的单元格,您需要按标记获取该单元格,之后您可以修改.hidden
并调用.evaluateHidden()
方法
@IBAction func btnAction(_ sender: Any) {
if let buttonRow = self.form.rowBy(tag: "sampleRow") as? ButtonRow
{
buttonRow.hidden = true
buttonRow.evaluateHidden()
}
}