我创建了一个自定义单元格,将UITableViewSectionHeader
替换为UISegmentedControl.index
更改时要处理的协议,以便我可以按名称或值对表进行排序:
import UIKit
protocol OrdenarTableViewDelegate {
func ordenarTableView(cell: OrdenarTableViewCell)
}
class OrdenarTableViewCell: UITableViewCell {
var delegate: OrdenarTableViewDelegate?
@IBOutlet weak var segmentedOrdenar: UISegmentedControl!
@IBAction func alteraOrdenacao(sender: UISegmentedControl) {
delegate?.ordenarTableView(self)
}
在UITableViewControler上我引用了协议
class SelecionadasTableViewController: UITableViewController, UITextFieldDelegate, OrdenarTableViewDelegate {
并实施了它:
// MARK: - Ordenar Delegate
func ordenarTableView(cell: OrdenarTableViewCell) {
if cell.segmentedOrdenar.selectedSegmentIndex == 0 {
listaCervejas = bancoDeDados.selecionaCervejas(false)
} else {
listaCervejas = bancoDeDados.selecionaCervejas(true)
}
ordenarCervejas = cell.segmentedOrdenar.selectedSegmentIndex
tableView.reloadData()
}
当我选择索引1时,应用程序工作得很好,但是当选择索引0时,仅在单击任何其他单元格上的UITextField
时执行操作,或者我将表拉下来进行刷新(顺便说一句,没有实现刷新)
有什么我想念的吗?因为它感觉真的很尴尬。
UISegmentedControl
上的另一个选项而没有触及屏幕上的任何其他地方时... 答案 0 :(得分:0)
重新加载tableview时,将重新加载添加到表视图的所有内容。每次检查选定的段索引,并在表重新加载后重置。
答案 1 :(得分:0)
我怀疑没有执行单元格的更新。 reloadTable是否在mainThread上执行?
在CellForRowAtIndexPath中包含一个打印日志语句以查找。
答案 2 :(得分:0)
你可以创建一个自定义视图来替换tableHeaderView,试试吧。
答案 3 :(得分:0)
我实际上找到了解决方案。您可以将IBAction拖到tableViewController上。然后就可以了!! 谢谢大家的帮助。