当我点击段 Odd 或 even 时,我在 Tableview 中得到 true 和 false 值,而不是奇数或偶数
When I tapped segment Odd or even I am getting true and false value in Tableview instead of odd value or even value
当我按 odd 时,它会显示 true 或 false。如何获取数组的值当我点击段上的奇数或偶数时我试图打印奇数值当我点击偶数时,如何得到这个。我是 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
有一个 ==
,计算结果为 true/false。这真的没有意义。此外,没有必要检查当前 indexPath.row
是奇数还是偶数...您正在尝试显示偶数或奇数列表,那么 indexPath.row
与那有什么关系?
相反,尝试创建第二个数组 filteredArray
。这将是 table 视图直接从中获取数据的地方。
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 { [=11=] % 2 == 0}
case 2: /// odd numbers
filteredArray = numberArray.filter { [=11=] % 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
}
当我按 odd 时,它会显示 true 或 false。如何获取数组的值当我点击段上的奇数或偶数时我试图打印奇数值当我点击偶数时,如何得到这个。我是 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
有一个 ==
,计算结果为 true/false。这真的没有意义。此外,没有必要检查当前 indexPath.row
是奇数还是偶数...您正在尝试显示偶数或奇数列表,那么 indexPath.row
与那有什么关系?
相反,尝试创建第二个数组 filteredArray
。这将是 table 视图直接从中获取数据的地方。
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 { [=11=] % 2 == 0}
case 2: /// odd numbers
filteredArray = numberArray.filter { [=11=] % 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
}