Ios 当选定段时,如何从表视图加载选定数据?
我想知道如何从表视图加载所选数据,例如,当选择“段索引等于1”时,表视图将重新加载,并且只显示状态等于“已批准”的数据。因为正如您从我下面的代码中看到的,我已经加载了所有状态的所有数据:。例如,如果segmentView.selectedSegmentIndex==1,表将重新加载状态为“已批准”的数据。我已经可以确定所选的索引了。我想要的是如何从表视图访问这些数据,我可以根据状态加载所选数据Ios 当选定段时,如何从表视图加载选定数据?,ios,swift,uitableview,tableview,uisegmentedcontrol,Ios,Swift,Uitableview,Tableview,Uisegmentedcontrol,我想知道如何从表视图加载所选数据,例如,当选择“段索引等于1”时,表视图将重新加载,并且只显示状态等于“已批准”的数据。因为正如您从我下面的代码中看到的,我已经加载了所有状态的所有数据:。例如,如果segmentView.selectedSegmentIndex==1,表将重新加载状态为“已批准”的数据。我已经可以确定所选的索引了。我想要的是如何从表视图访问这些数据,我可以根据状态加载所选数据 func tableView(_ tableView: UITableView, cellForRow
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// Table view cells are reused and should be dequeued using a cell identifier.
let cellIdentifier = "ToDoListTableViewCell"
let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! ToDoListTableViewCell
cell.delegate = self
// let toDoActionItem = fetchedResultsController.object(at: indexPath)
if let getTempDetails: [String : Any] = getAllDetail[indexPath.row] {
print("ang tanan data:" , getTempDetails)
if let str = getTempDetails["status"] as? [String: String] {
if let name = str["name"] {
if name == "ongoing" {
cell.toDoItemLabel.text = getTempDetails["name"] as? String
cell.statuslabel.backgroundColor = created
// cell.label.textColor = UIColor(red: 0.9294, green: 0.3333, blue: 0.1804, alpha: 1.0)
// cell.backgroundColor = created
}
else if name == "approved" {
cell.toDoItemLabel.text = getTempDetails["name"] as? String
cell.statuslabel.backgroundColor = done
cell.checkBoxButton.isSelected = true
}
else if name == "for approval" {
cell.toDoItemLabel.text = getTempDetails["name"] as? String
cell.statuslabel.backgroundColor = pending
}else if name == "near expiry" {
cell.toDoItemLabel.text = getTempDetails["name"] as? String
cell.statuslabel.backgroundColor = neardue
} else if name == "expired" {
cell.toDoItemLabel.text = getTempDetails["name"] as? String
cell.statuslabel.backgroundColor = expired
} else {
print("false")
cell.toDoItemLabel.text = "LOLS"
}
}
}
}
code for segment (in selecting segment)
func selectSegmentInSegmentView(segmentView: SMSegmentView) {
if segmentView.selectedSegmentIndex == 1 {
print("ang index nga emo ge click is one")
// let selectedSegment : SMSegment = segmentView.selectedSegment!
// self.userName = selectedSegment.label.text!
} else {
logic here
}
self.setUpTableView()
or could be self.tableView.reloadData()
}
有关选定索引的筛选器数组(状态):
选择
UISegmentControl
的不同段时,只需创建5个单独的数组即可加载
var ongoingArr = [[String: Any]]() // For segment index 0
var approvedArr = [[String: Any]]() // For segment index 1
var forApprovalArr = [[String: Any]]() // For segment index 2
var nearExpiryArr = [[String: Any]]() // For segment index 3
var expiredArr = [[String: Any]]() // For segment index 4
您拥有整个数据getAllDetail
,并且您通过API或上一屏幕获取此数组中的数据:
var getAllDetail = [[String: Any]]()
如果您是从API获取数据,那么在getAllDetail
中加载数据后,再加载5个以上的数组。仅创建数组扩展的Fo,如下所示:
和,加载超过5个阵列:
func loadSegmentArray() {
ongoingArr = getAllDetail.filterArray("ongoing")
approvedArr = getAllDetail.filterArray("approved")
forApprovalArr = getAllDetail.filterArray("for approval")
nearExpiryArr = getAllDetail.filterArray("near expiry")
expiredArr = getAllDetail.filterArray("expired")
// Select 0th index of segment and reload table
segmentView.selectedSegmentIndex = 0
self.setUpTableView() // Reload Table view
}
在func中选择SegmentInsegmentView
,只需重新加载表视图:
func selectSegmentInSegmentView(segmentView: SMSegmentView) {
self.setUpTableView()
}
并根据这5个数组更新您的UITabelView
委托和数据源方法
对于示例,我正在编写numberOfRowsInSection
和cellForRowAt indexPath
:
func loadSegmentArray() {
ongoingArr = getAllDetail.filterArray("ongoing")
approvedArr = getAllDetail.filterArray("approved")
forApprovalArr = getAllDetail.filterArray("for approval")
nearExpiryArr = getAllDetail.filterArray("near expiry")
expiredArr = getAllDetail.filterArray("expired")
// Select 0th index of segment and reload table
segmentView.selectedSegmentIndex = 0
self.setUpTableView() // Reload Table view
}
最好的选择是:
func loadSegmentArray() {
ongoingArr = getAllDetail.filterArray("ongoing")
approvedArr = getAllDetail.filterArray("approved")
forApprovalArr = getAllDetail.filterArray("for approval")
nearExpiryArr = getAllDetail.filterArray("near expiry")
expiredArr = getAllDetail.filterArray("expired")
// Select 0th index of segment and reload table
segmentView.selectedSegmentIndex = 0
self.setUpTableView() // Reload Table view
}
制作一个用于显示的公共数组
,该数组将用于在表格视图
中显示数据:
在所有情况下,如:
制作一个如下的通用函数:
func filterDataStatusWise(strStatus:String){
for dict in arrMainResponse{
let strStatus = arrMainResponse["status"]
if strStatus["name"] = strStatus{
//Whatever data add in arrForDisplay here
}
tableView.reloadData()
}
}
var arrForDisplay = [String:Any]()
if condition1{
filterDataStatusWise(strStatus: "ongoing")
}else if condition2{
filterDataStatusWise(strStatus: "approved")
}else if condition3{
filterDataStatusWise(strStatus: "for approval")
}else if condition4{
filterDataStatusWise(strStatus: "near expiry")
}else{
filterDataStatusWise(strStatus: "expired")
}
然后像这样使用它:
func filterDataStatusWise(strStatus:String){
for dict in arrMainResponse{
let strStatus = arrMainResponse["status"]
if strStatus["name"] = strStatus{
//Whatever data add in arrForDisplay here
}
tableView.reloadData()
}
}
var arrForDisplay = [String:Any]()
if condition1{
filterDataStatusWise(strStatus: "ongoing")
}else if condition2{
filterDataStatusWise(strStatus: "approved")
}else if condition3{
filterDataStatusWise(strStatus: "for approval")
}else if condition4{
filterDataStatusWise(strStatus: "near expiry")
}else{
filterDataStatusWise(strStatus: "expired")
}
希望有帮助 您的问题是关于只过滤“已批准”/“已过期”还是关于TableView?我将使用一个“selectedDetailsArray”,它将根据segmentedControl选项过滤
getAllDetail
,并且只对数据源(numberOfRows、cellForRow等)使用这个选项我想要的是例如segmentView.selectedSegmentIndex==1表将加载状态等于approved的数据。例如,段控制中是否有5个段,分别命名为Continuous、approved、ForApproval、near Expire和expired?是的索引数等于status@DurnKurvirck你能再解释一下代码吗。?昨天的聊天我们可以在这里讨论我正在从一个API获取数据作为对API的响应,加载getAllDetail
首先,然后调用一个方法,加载所有5个数组并将选定的段索引设置为0,然后重新加载表你能打开聊天吗,因此,我可以通过这里澄清我创建了一个函数loadSegmentArray
在加载getAllDetail
后调用此函数以响应API成功。我找不到聊天选项,我对堆栈溢出有点陌生。嘿,先生,你在吗?@DurnKurvirck我回到聊天区,我们可以继续