gpt4 book ai didi

ios - UITableView 只显示 10 个单元格/行

转载 作者:行者123 更新时间:2023-11-28 12:12:11 25 4
gpt4 key购买 nike

我的 TableViewController 上有两个范围/选项卡,“全部”和“前 10 个”。我只希望我的“前 10 个”选项卡只显示 10 个单元格/行,而不是显示所有内容。请查看我的图片以获得更好的引用。

P.S:我的 UITableView 用于使用 firebase 数据库显示我的事件的 30 多个展位的实时结果。另外,case 0 是“All”,case 1 是“Top 10”。

表格 View Controller

import UIKit
import FirebaseDatabase

var ref: DatabaseReference?
var databaseHandle: DatabaseHandle?
var postData = [String]()
var postData2 = [String]()
var currentpostDataArray = [String]()
var tableDataArray = [tableData]()
var tableDataArray2 = [tableData]()
var searchArray = [tableData]()
var selectedTab = 0

class TableViewController: UITableViewController, UISearchBarDelegate {


@IBOutlet var searchBar: UISearchBar!

override func viewDidLoad() {
super.viewDidLoad()

setUpSearchBar()

ref = Database.database().reference()//set the firebase reference

databaseHandle = ref?.child("Posts2").observe(.value, with: { (snapshot) in
// Code to execute when a child is added under "Posts"
postData.removeAll()
postData2.removeAll()
tableDataArray.removeAll()


for child in snapshot.children {
let snap = child as! DataSnapshot
let key = snap.key
let value = String(describing: snap.value!)
let rating = (value as NSString).integerValue

postData.append(key)
postData2.append(value)

tableDataArray.append(tableData(boothName: key, boothRating: rating))
currentpostDataArray = postData
}

self.tableView.reloadData()


})

databaseHandle = ref?.child("Posts2").queryOrderedByValue().queryLimited(toLast: 10).observe(.value, with: { (snapshot) in
// Code to execute when a child is added under "Posts"
postData.removeAll()
postData2.removeAll()
tableDataArray2.removeAll()


for child in snapshot.children {
let snap = child as! DataSnapshot
let key = snap.key
let value = String(describing: snap.value!)
let rating = (value as NSString).integerValue

postData.append(key)
postData2.append(value)

tableDataArray2.append(tableData(boothName: key, boothRating: rating))
currentpostDataArray = postData
}

self.tableView.reloadData()


})

}


private func setUpSearchBar() {
searchBar.delegate = self
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return currentpostDataArray.count
}




override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)

cell.textLabel?.text = currentpostDataArray[indexPath.row]
cell.detailTextLabel?.text = postData2[indexPath.row] + " ♥"
cell.detailTextLabel?.textColor = UIColor.red;
return cell
}


func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
switch searchBar.selectedScopeButtonIndex {
case 0:
selectedTab = 0
searchArray.removeAll()
searchArray = tableDataArray
currentpostDataArray.removeAll()
postData2.removeAll()
if !searchText.isEmpty {
for data in searchArray {
let item = data.boothName
if (item.lowercased().range(of: searchText.lowercased()) != nil)
{
currentpostDataArray.append(data.boothName)
let value = String(describing: data.boothRating)
postData2.append(value)
}
}
}
else {
loadDara()
}
self.tableView.reloadData()
case 1:
selectedTab = 1
searchArray.removeAll()
searchArray = tableDataArray2
currentpostDataArray.removeAll()
postData2.removeAll()
if !searchText.isEmpty {
for data in searchArray {
let item = data.boothName
if (item.lowercased().range(of: searchText.lowercased()) != nil)
{
currentpostDataArray.append(data.boothName)
let value = String(describing: data.boothRating)
postData2.append(value)
}
}
}
else {
loadDara2()
}
self.tableView.reloadData()
default:
break
}
}


func searchBar(_ searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int) {
switch selectedScope {
case 0:
currentpostDataArray.removeAll()
postData2.removeAll()
for data in tableDataArray {
currentpostDataArray.append(data.boothName)

let value = String(describing: data.boothRating)
postData2.append(value)
}
self.tableView.reloadData()

case 1:
currentpostDataArray.removeAll()
postData2.removeAll()
let sortedTableData = tableDataArray2.sorted(by: { $0.boothRating > $1.boothRating })
for data in sortedTableData {
currentpostDataArray.append(data.boothName)

let value = String(describing: data.boothRating)
postData2.append(value)
}
self.tableView.reloadData()

default:
break

}
tableView.reloadData()
}

func loadDara() {
for data in tableDataArray {
currentpostDataArray.append(data.boothName)

let value = String(describing: data.boothRating)
postData2.append(value)
}

}

func loadDara2() {
let sortedTableData = tableDataArray2.sorted(by: { $0.boothRating > $1.boothRating })
for data in sortedTableData {
currentpostDataArray.append(data.boothName)

let value = String(describing: data.boothRating)
postData2.append(value)
}
}

}

class tableData {
var boothName: String
var boothRating: Int
init(boothName: String, boothRating: Int) {
self.boothName = boothName
self.boothRating = boothRating
}
}

enter image description here enter image description here

最佳答案

在您的 View Controller 中声明一个变量,指向选择的段

var selectedTab = 0

selectedScopeButtonIndexDidChange 中,根据选择更改为上述变量赋值:

func searchBar(_ searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int) {
switch selectedScope {
case 0:
selectedTab = 0
currentpostDataArray.removeAll()
postData2.removeAll()
for data in tableDataArray {
currentpostDataArray.append(data.boothName)

let value = String(describing: data.boothRating)
postData2.append(value)
}
self.tableView.reloadData()

case 1:
selectedTab = 1
currentpostDataArray.removeAll()
postData2.removeAll()
let sortedTableData = tableDataArray.sorted(by: { $0.boothRating > $1.b

oothRating })
for data in sortedTableData {
currentpostDataArray.append(data.boothName)

let value = String(describing: data.boothRating)
postData2.append(value)
}
self.tableView.reloadData()

default:
break

}
tableView.reloadData()
}

numberOfRowsInSection 中,检查选定的段并设置行数:

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if selectedTab = 0 {
return currentpostDataArray.count
} else {
if currentpostDataArray.count >= 10 {
return 10
} else {
return currentpostDataArray.count
}
}
}

关于ios - UITableView 只显示 10 个单元格/行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48088221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com