iOS点击分段控件奇偶选项时TableView显示true/false如何解决
修复方案
核心问题说明
- 你在
cellForRowAt方法中直接将奇偶判断的布尔值转为字符串输出,所以才会显示true/false而非具体数值 - 列表的行数没有根据选中的分段做过滤,始终返回全部100个数字的长度,不符合只展示奇/偶数的需求
- 建议新增筛选数组变量统一管理要展示的数据,逻辑更清晰不易出错
修正后完整代码
class ViewController: UIViewController, UITableViewDelegate,UITableViewDataSource { @IBOutlet weak var tableView: UITableView! @IBOutlet weak var segmentOutlet: UISegmentedControl! let numberArray = Array(1...100) // 新增筛选后展示的数组 var filteredArray = [Int]() override func viewDidLoad() { super.viewDidLoad() tableView.delegate = self tableView.dataSource = self // 初始化默认展示全部数字 filteredArray = numberArray } @IBAction func segmentControl(_ sender: UISegmentedControl) { // 切换分段时先过滤数据再刷新列表 switch sender.selectedSegmentIndex { case 0: // 假设第一个分段是展示全部 filteredArray = numberArray case 1: // 第二个分段展示偶数 filteredArray = numberArray.filter { $0 % 2 == 0 } case 2: // 第三个分段展示奇数 filteredArray = numberArray.filter { $0 % 2 == 1 } default: filteredArray = numberArray } tableView.reloadData() } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { // 返回筛选后数组的长度 return filteredArray.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell : TableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell") as! TableViewCell // 直接取筛选后的数组对应的数值即可 cell.numberLbl.text = String(filteredArray[indexPath.row]) return cell } }
原问题运行效果参考

内容的提问来源于stack exchange,提问作者iFateh
相关产品推荐
相关产品推荐

