以前我在 tableview 部分标题单元格中遇到了 UISegmentedControl 的问题,我想听听主视图控制器中的值变化。
我通过addTarget
在方法中使用 UISegmentedControl解决了这个问题tableView:viewForHeaderInSection
,这很有效。
第一段是默认选择的,这是可行的。当点击第二段时,它会用其他数据重新加载 tableview,这是预期的行为。但是,仍然选择了第一段。这意味着我无法切换回表格视图中的原始数据。
请观看此视频,您将看到我要解释的内容。
我无法弄清楚我的代码有什么问题?
/*
* Main View Controller
*/
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
if section == 0 {
return nil
}
let sectionCell = tableView.dequeueReusableCellWithIdentifier("SegmentCell") as! SegmentTableViewCell
// Add event for the UISegmentedControl
sectionCell.segmentControl.addTarget(self, action: #selector(self.handleSegmentControlEvent), forControlEvents: .ValueChanged)
return sectionCell
}
func handleSegmentControlEvent(sender: UISegmentedControl) {
self.segmentControlIndex = sender.selectedSegmentIndex
switch (sender.selectedSegmentIndex) {
case 0:
if latestTableData.count == 0 {
loadItems("latest")
} else {
tableView.reloadData()
}
break
case 1:
if closestTableData.count == 0 {
loadItems("closest")
} else {
tableView.reloadData()
}
break;
default:
break
}
}
/*
* Segment table view cell
*/
class SegmentTableViewCell: UITableViewCell {
@IBOutlet weak var segmentControl: UISegmentedControl!
override func awakeFromNib() {
super.awakeFromNib()
}
}
我看不出我做错了什么?