You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:06:04