Swift Eureka: невозможно динамически скрыть / показать ButtonRow внутри cellUpdate
Это мой код для отображения и скрытия строки. Я в основном установил скрытый атрибут, как упомянуто в 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
Еще раз спасибо!
1 ответ
Правильный способ скрыть строку или даже раздел в 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()
}
}