繁体   English   中英

在Swift iOS的表格视图中进行选择时,UIsearchbar结果出现错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM