UISearchBar 通过 UITableView 和 JSON
UISearchBar via UITableView with JSON
UISearchBar
无法执行搜索,怎么了?
我正在寻找有关使用 json 进行搜索的教程,但我的代码已显示在 table 视图中但无法搜索。我是 iOS 开发者世界的新手。
import UIKit
class updatedata: UIViewController,UITableViewDataSource, UISearchBarDelegate{
@IBOutlet weak var searchbarr: UISearchBar!
private var actors : [listpeserta]! = []
private var realdata : [listpeserta]! = []
var searching = false
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
let url : URL = URL(string: "link")!
var request : URLRequest = URLRequest (url: url)
request.httpMethod = "GET"
NSURLConnection.sendAsynchronousRequest(request, queue: .main) { (response, data, error) in
guard let data = data else {
print(error)
return
}
let responseString : String! = String(data : data, encoding: .utf8)
do {
let jsonDecoder : JSONDecoder = JSONDecoder()
self.actors = try jsonDecoder.decode([listpeserta].self, from: data)
self.realdata = self.actors
self.tableView.reloadData()
}catch{print(error.localizedDescription)}
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if searching {return realdata.count}
else
{ return actors.count}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: .default, reuseIdentifier: nil)
if searching {
cell.textLabel?.text = realdata[indexPath.item].nama
}else
{cell.textLabel?.text = actors[indexPath.item].nama}
return cell
}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
realdata = actors.filter({[=11=].nama.prefix(searchText.count) == searchText.lowercased()})
searching = true
tableView.reloadData()
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
searching = false
searchBar.text = ""
tableView.reloadData()
}
}
这是,class listpeserta.swift
import Foundation
class listpeserta: Codable {
public var nama : String!
}
您似乎缺少 searchBar 的委托。当你需要将任务/职责分配给另一个对象时,记得添加委托。
例如,在您的 viewDidLoad 中:
searchbarr.delegate = self
p.s。 tableView.dataSource = 自己也不见了。
UISearchBar
无法执行搜索,怎么了?
我正在寻找有关使用 json 进行搜索的教程,但我的代码已显示在 table 视图中但无法搜索。我是 iOS 开发者世界的新手。
import UIKit
class updatedata: UIViewController,UITableViewDataSource, UISearchBarDelegate{
@IBOutlet weak var searchbarr: UISearchBar!
private var actors : [listpeserta]! = []
private var realdata : [listpeserta]! = []
var searching = false
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
let url : URL = URL(string: "link")!
var request : URLRequest = URLRequest (url: url)
request.httpMethod = "GET"
NSURLConnection.sendAsynchronousRequest(request, queue: .main) { (response, data, error) in
guard let data = data else {
print(error)
return
}
let responseString : String! = String(data : data, encoding: .utf8)
do {
let jsonDecoder : JSONDecoder = JSONDecoder()
self.actors = try jsonDecoder.decode([listpeserta].self, from: data)
self.realdata = self.actors
self.tableView.reloadData()
}catch{print(error.localizedDescription)}
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if searching {return realdata.count}
else
{ return actors.count}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: .default, reuseIdentifier: nil)
if searching {
cell.textLabel?.text = realdata[indexPath.item].nama
}else
{cell.textLabel?.text = actors[indexPath.item].nama}
return cell
}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
realdata = actors.filter({[=11=].nama.prefix(searchText.count) == searchText.lowercased()})
searching = true
tableView.reloadData()
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
searching = false
searchBar.text = ""
tableView.reloadData()
}
}
这是,class listpeserta.swift
import Foundation
class listpeserta: Codable {
public var nama : String!
}
您似乎缺少 searchBar 的委托。当你需要将任务/职责分配给另一个对象时,记得添加委托。
例如,在您的 viewDidLoad 中:
searchbarr.delegate = self
p.s。 tableView.dataSource = 自己也不见了。