我创建了一个自定义单元,用一个协议替换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上的另一个选项,而没有触及屏幕上的其他任何位置时,问题才会发生……
发布于 2019-05-01 20:11:03
我真的找到了解决办法。您可以将IBAction拖到tableViewController中。那就很好了!!谢谢大家的帮助。
发布于 2016-12-01 02:35:37
您可以创建一个自定义视图来替换tableHeaderView,尝试一下。
发布于 2016-05-05 07:55:18
重新加载表视图时,添加到表视图的所有内容都将被重新加载。每次检查选定的段索引,并在重新加载表后重新设置此索引。
https://stackoverflow.com/questions/37041665
复制相似问题