我使用以下方法对文本字段进行搜索,在单个表格视图中使用时效果很好。
但是当表格视图中有多个部分时,我不知道如何实现这一点。
在普通的单节表格视图中
foodTypeArr = ["Japanesh", "Chinesh", "Lebanesh", "Italian", "Indian"]
searchResultArr.addObjects(from: foodTypeArr as! [Any])
func searchAutocompleteEntriesWithSubstring(substring: String)
{
searchResultArr.removeAllObjects()
for curString in foodTypeArr
{
let myString:NSString! = curString as! NSString
if (myString).lowercased.contains(substring)
{
searchResultArr.add(curString)
}
}
self.tblList.reloadData()
}
在多段式表格视图中:
var searchAreaArr = NSMutableArray()
var areaArr = [[String]]()
var areaTitles = NSArray()
areaArr = [["Vadvalli", "Mullai Nagar", "P.N.Pudhur"], ["Lawly Road", "Kowly Brown", "D.B Road"], ["Raja Street", "Gandhipark", "Five corner road”, "Main Town Hall”]]
areaTitles = ["Vadavalli", "R.S.Puram", "Town Hall"]
for i in 0..<areaArr.count
{
searchAreaArr.addObjects(from: areaArr[i])
}
我正在TextField-shouldChangeCharactersIn范围内调用以下方法。
func searchAutocompleteEntriesWithSubstring(substring: String)
{
areaArr.removeAll()
var mArr = [String]()
for curString in searchAreaArr
{
let myString:NSString! = curString as! NSString
if (myString).lowercased.contains(substring)
{
mArr.append(curString as! String)
}
}
areaArr.insert(mArr, at: 0)
}
使用这个代码,它会将过滤后的字符串插入到areaArr数组的0号索引中。但是我需要它们应该在它们所属的章节中,并且章节名称应该是它们自己的,以及更改被过滤的字符串所属章节的索引。
例如,如果搜索文本是road,那么它应该是:
R.S puram (Section 1)
- Lawly Road
- D.B Road
Town Hall (Section 2)
- Five corner road
我的表格视图方法
func numberOfSections(in tableView: UITableView) -> Int
{
return areaArr.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return areaArr[section].count
}
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String?
{
if section < areaTitles.count
{
return areaTitles[section] as? String
}
return nil
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell:UITableViewCell =
self.tblList.dequeueReusableCell(withIdentifier: "cell") as UITableViewCell!
cell.textLabel?.text = "\(areaArr[indexPath.section][indexPath.row])"
}
我花了整整一天的时间,但还是没能解决问题,请帮忙修复……欢迎提出您的建议。