gpt4 book ai didi

ios - 快速搜索栏 Controller 与 TableView

转载 作者:行者123 更新时间:2023-11-30 12:17:15 24 4
gpt4 key购买 nike

我是 Swift 编程新手

带有表格 View 的SearchBar Controller 。我想在表格 View 中显示多个学生,其工作正常。我可以将搜索栏 Controller 添加到 TableView 并显示特定的学生数据。表格 View 单元格包含我想在搜索后显示特定学生的学生信息和图像

这是代码

@IBOutlet var SearchBarDisp:UISearchBar!

override func viewDidLoad()
{
super.viewDidLoad()
searchController.searchResultsUpdater = self
searchController.hidesNavigationBarDuringPresentation = false
searchController.dimsBackgroundDuringPresentation = false
tableView.tableHeaderView = searchController.searchBar
}

func updateSearchResults(for searchController: UISearchController) {
//todo
}

我可以从json获取学生数据

func getKids(url : String) {

UIApplication.shared.beginIgnoringInteractionEvents()

var errorCode = "1"

var msg = "Failed"

var request = URLRequest(url: URL(string: "getstaffstudents",
relativeTo: URL(string: serverURL+"/rkapi/api/"))!)

let session = URLSession.shared

request.httpMethod = "POST"

let bodyData = "staffId=\(staffId)"

request.httpBody = bodyData.data(using: String.Encoding.utf8);

let task = session.dataTask(with:request,completionHandler:{(d,response,error)in

do{

if let data = d {

if let jsonData = try JSONSerialization.jsonObject(with: data, options: []) as? NSDictionary {

errorCode = String(describing: jsonData["errorCode"]!)

msg = jsonData["msg"] as! String

print("msg values",msg)

if errorCode == "0" {

if let kid_list = jsonData["students"] as? NSArray {

for i in 0 ..< kid_list.count {

if let kid = kid_list[i] as? NSDictionary {

kidHoleData.removeAll()

let imageURL = url+"/images/" + String(describing: kid["photo"]!)

self.kidsData.append(Kids(
studentId: kid["studentId"] as? String,
name:kid["name"] as? String,
classId : kid["classId"] as? String,
standard: ((kid["standard"] as? String)! + " " + (kid["section"] as? String)!),
photo : (imageURL),
school: kid["schoolName"] as? String,
schoolId : "1",
url : url)
)
}


}
self.loopCount += 1

self.do_table_refresh()
}

} else {
self.displayAlert("Kids", message: msg)
}

} else {

self.displayAlert("Kids", message: "Data Not Available. Please try again")

}
}else {

self.displayAlert("Kids", message: "Please try again")

}

} catch let err as NSError {

print("JSON Error \(err)")
}
})

task.resume()
}

表格 View

 func numberOfSections(in tableView: UITableView) -> Int {

return (kidsData.count == 0) ? 0 : 1
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

return kidsData.count


}


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell =
tableView.dequeueReusableCell(
withIdentifier: "Kidscell", for: indexPath) as! KidsTableViewCell

let maskLayer = CAShapeLayer()
let bounds = cell.bounds

maskLayer.path = UIBezierPath(roundedRect: CGRect(x: 3, y: 3, width: bounds.width-15, height: bounds.height-15), cornerRadius: 2).cgPath
cell.layer.mask = maskLayer

let row = (indexPath as NSIndexPath).row
if(kidsData.count>0){

let kid = kidsData\[row\] as Kids
cell.kidNameLabel.text = kid.name
cell.classLabel.text = kid.standard
cell.kidNameLabel.lineBreakMode = .byWordWrapping
cell.kidNameLabel.numberOfLines = 0
cell.kidImageView.image = UIImage(named: "profile_pic")
cell.kidImageView.downloadImageFrom(link: kid.photo!, contentMode: UIViewContentMode.scaleAspectFit) //set your image from link array.

}
return cell

}

我想在表格 View 中显示特定的学生(就像如果我可以将学生姓名搜索为vani,它会在表格 View 中显示学生vani)请帮助我

最佳答案

将洞数据复制到 attendInfoDupilicate

 var attendanceInfoDupilicate = [AttendanceInfo]()

在Json服务调用内部结束

self.attendanceInfoDupilicate = self.attendanceInfo

更新搜索 Controller

    func updateSearchResults(for searchController: UISearchController)
{



let searchToSeatch = AttendanceSearchBarController.searchBar.text

if(searchToSeatch == "")
{
self.attendanceInfo = self.attendanceInfoDupilicate

}
else{

self.attendanceInfo.removeAll()

let AttedanceData = self.attendanceInfoDupilicate

var kidsArray = [String]()

for AttendanceInfo in AttedanceData
{

kidsArray.append(AttendanceInfo.name)
if(AttendanceInfo.name.range(of: searchToSeatch!, options: .caseInsensitive) != nil)
{
self.attendanceInfo.append(AttendanceInfo)

}

}




}

self.TableView.reloadData()


}

关于ios - 快速搜索栏 Controller 与 TableView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45251199/

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