![](/img/trans.png)
[英]UISearchBar disappears after selecting row in search results TableView
[英]Error with UIsearchbar results while selecting from tableview in swift iOS
在当前应用程序中,我显示了一个学生列表。 我给一个复选标记按钮供选择。 我可以从表格中选择学生,但是每当我尝试从搜索栏结果中选择时,它都无法正常工作。
例如,在列表中,我选择了索引为0和1的对象; 每当我尝试搜索某些内容时,索引0和1的搜索栏结果对象都会自动被选择。 为什么会这样,我该如何解决?
// MARK:- seachbar methods
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String){
search_bar.showsCancelButton = true
print("SERACH TEXT ",searchText)
if searchText.isEmpty{
is_searching = false
} else {
print(" search text %@ ",searchText as NSString)
is_searching = true
searchingDataArray.removeAllObjects()
for index in 0 ..< studentsArray.count
{
var localDic :NSDictionary!
localDic = studentsArray.object(at: index) as! NSDictionary
let nameString = localDic["name"] as? NSString
let regString = localDic["reg_no"] as? NSString
if (nameString?.localizedCaseInsensitiveContains(searchText))! || (regString?.localizedCaseInsensitiveContains(searchText))!
{
searchingDataArray.add(localDic)
} else {
print("Not Exists")
}
print(" search text %@ ",searchingDataArray)
self.tutorListView.reloadData()
}
}
}
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
searchBar.resignFirstResponder()
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar)
{
is_searching = false
search_bar.text = ""
search_bar.showsCancelButton = false
self.tutorListView.reloadData()
}
func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
is_searching = false
self.tutorListView.reloadData()
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "SKTutorCell", for: indexPath) as! SKTutorCell
var localDic :NSDictionary!
if is_searching
{
localDic = searchingDataArray.object(at: indexPath.row) as! NSDictionary
}
else
{
localDic = studentsArray.object(at: indexPath.row) as! NSDictionary
}
cell.nameRegdNoLbl.text = localDic?.value(forKey: "name") as? String
cell.checkMarkBtn.tag = indexPath.row
cell.checkMarkBtn.addTarget(self, action: #selector(checkBoxSelection(_:)), for: .touchUpInside)
if ((studentcheckArray[indexPath.row] as AnyObject).isEqual("0")) {
cell.checkMarkBtn.setImage(UIImage(named:"UnCheckIcon"), for: .normal)
}else{
cell.checkMarkBtn.setImage(UIImage(named:"CheckIcon"), for: .normal)
}
cell.seeProfileBtn.tag = indexPath.row
cell.seeProfileBtn.addTarget(self, action: #selector(seeProfilAction(_:)), for: .touchUpInside)
return cell
}
@objc func checkBoxSelection(_ sender:UIButton)
{
let btnTag = sender.tag
print("buttonRow--",btnTag)
if ((studentcheckArray[btnTag] as AnyObject).isEqual("0")) {
studentcheckArray[btnTag] = "1"
}
else {
studentcheckArray[btnTag] = "0"
}
var NewArray = NSMutableArray()
for i in 0..<studentcheckArray.count {
if ((studentcheckArray[i] as AnyObject).isEqual("1")) {
NewArray.add(studentcheckArray[i])
print("NewArray",NewArray)
}
}
if NewArray.count < studentcheckArray.count {
selectAllBtn.setImage(#imageLiteral(resourceName: "UnCheckIcon"), for: .normal)
}
self.tutorListView.reloadData()
}
这样尝试
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "SKTutorCell", for: indexPath) as! SKTutorCell
var localDic :NSDictionary!
if is_searching
{
localDic = searchingDataArray.object(at: indexPath.row) as! NSDictionary
if ((searchingDataArray[indexPath.row] as AnyObject).isEqual("0")) {
cell.checkMarkBtn.setImage(UIImage(named:"UnCheckIcon"), for: .normal)
}else{
cell.checkMarkBtn.setImage(UIImage(named:"CheckIcon"), for: .normal)
}
}
else
{
localDic = studentsArray.object(at: indexPath.row) as! NSDictionary
if ((studentcheckArray[indexPath.row] as AnyObject).isEqual("0")) {
cell.checkMarkBtn.setImage(UIImage(named:"UnCheckIcon"), for: .normal)
}else{
cell.checkMarkBtn.setImage(UIImage(named:"CheckIcon"), for: .normal)
}
}
cell.nameRegdNoLbl.text = localDic?.value(forKey: "name") as? String
cell.checkMarkBtn.tag = indexPath.row
cell.checkMarkBtn.addTarget(self, action: #selector(checkBoxSelection(_:)), for: .touchUpInside)
cell.seeProfileBtn.tag = indexPath.row
cell.seeProfileBtn.addTarget(self, action: #selector(seeProfilAction(_:)), for: .touchUpInside)
return cell
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.