当我点击分段奇数或偶数时,我会在Tableview中得到真值和假值而不是奇数或偶数值

2022-01-28 13:05:38 标签 iosswiftuitableviewsegment

当我按奇数时,它会显示是或非。如何能得到数组的值,我试图打印奇数值时,我点击奇数段或甚至值时,我点击甚至如何能得到这个。我是ios新手。请帮助

class ViewController: UIViewController, UITableViewDelegate,UITableViewDataSource {
    @IBOutlet weak var tableView: UITableView!
    
    @IBOutlet weak var segmentOutlet: UISegmentedControl!
    let numberArray = Array(1...100)
    var segmentIndex  = 0
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        tableView.delegate = self
        tableView.dataSource = self
    }
    @IBAction func segmentControl(_ sender: UISegmentedControl) {
        
        tableView.reloadData()
        
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return numberArray.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell : TableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell") as! TableViewCell
        cell.numberLbl.text = String(numberArray[indexPath.row])
        if segmentOutlet.selectedSegmentIndex == 1 {
            cell.numberLbl.text = String(numberArray[indexPath.row] % 2 == 0)
            
        }
        if segmentOutlet.selectedSegmentIndex == 2 {
            cell.numberLbl.text = String(numberArray[indexPath.row] % 2 == 1)
        }
        
        return cell
    }
}

我的模拟器图片:

# # #你numberArray[indexPath.row] % 2 == 0 has a == which 它的值为真/假。这真的说不通。也不需要检查电流indexPath.row is odd or even... you're trying to display a list of even or odd numbers so what does indexPath.row<是奇数还是偶数…你试图显示一个偶数或奇数的列表,那么怎么办呢indexPath.row have to do with that?

跟这个有关系吗?

相反,尝试创建第二个数组filteredArray。这将是表视图直接获取数据的地方。

let numberArray = Array(1...100)
lazy var filteredArray: [Int] = { numberArray }() /// return `numberArray` by default

然后,您可以根据selectedSegmentIndex更新filteredArray。

@IBAction func segmentControl(_ sender: UISegmentedControl) {
    switch sender.selectedSegmentIndex {
    case 1: /// even numbers
        filteredArray = numberArray.filter { $0 % 2 == 0}
    case 2: /// odd numbers
        filteredArray = numberArray.filter { $0 % 2 == 1}
    default: /// all numbers
        filteredArray = numberArray
    }
    tableView.reloadData()
}

最后,只需从数据源方法中的filteredArray读取数据。

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return filteredArray.count /// use `filteredArray`
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell: TableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell") as! TableViewCell
    cell.numberLbl.text = String(filteredArray[indexPath.row]) /// also use `filteredArray`
    return cell
}
阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码