Добавление SearchBar делает некоторые TableViewCell не щелкающими - PullRequest
0 голосов
/ 24 января 2019

В моем примере приложения есть простой TableView с небольшим количеством данных.Я был в состоянии выбрать все ячейки с этой конфигурацией.Проблема возникла, когда я добавил SearchBar поверх этой ячейки tableView.По неизвестной причине я не могу выбрать ячейку.Существует некоторая задержка, при которой некоторые ячейки не активируются.Этот ChatContactListVC является частью экрана навигации.Я создаю эти UITableViewCell из файла Xib.

class ChatContactListVC:UIViewController{

    @IBOutlet weak var tbView: UITableView!
    @IBOutlet weak var searchBar: UISearchBar!

    var AppDelegate = UIApplication.shared.delegate as! AppDelegate
    lazy var chatManager = AppDelegate.chatManager!
    var contacts:[ChatModel] = [ChatModel]()
    var filterContact:[ChatModel] = [ChatModel]()

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(true)
         loadData()
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        tableViewSetup()
        navigationItem.title = "New Message"
        searchBar.delegate = self
        searchBar.placeholder = "Search..."
    }

    func loadData(){
        chatManager.getFakeContactData { (data, err) in
            if err == nil{
                if let data = data {
                    self.contacts = data
                    self.filterContact = data
                    DispatchQueue.main.async {
                        self.tbView.reloadData()
                    }
                }
            }
        }
    }
    func tableViewSetup(){
        tbView.delegate = self
        tbView.dataSource = self
        //tbView.allowsSelection = true
        //tbView.separatorStyle = .none
        tbView.register(UINib(nibName: "ChatFriendListCell", bundle: nil), forCellReuseIdentifier: "cellId")
    }
}

extension ChatContactListVC:UITableViewDelegate,UITableViewDataSource{
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return filterContact.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cellId", for: indexPath) as! ChatFriendListCell

        if filterContact.count != 0 {
            cell.configure(userName: filterContact[indexPath.row].userId, displayName: filterContact[indexPath.row].displayName, imageLink: "")
        }else{
            cell.configure(userName: filterContact[indexPath.row].userId, displayName: filterContact[indexPath.row].displayName, imageLink: "")
        }

        return cell
    }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        print("Didselect")
        print("selected")

        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        var chatVC = storyboard.instantiateViewController(withIdentifier: "ChatViewController") as? ChatViewController
        chatVC?.chatManager = chatManager
        // change this
        chatVC?.toUserId = filterContact[indexPath.row].userId
        navigationController?.show(chatVC!, sender: nil)

        //self.present(chatVC!, animated: true, completion: nil)
    }



}

extension ChatContactListVC:UISearchBarDelegate{
    //MARK: SearchBar Methods
    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {

        filterContact = searchText.isEmpty ? contacts : contacts.filter({ (data) -> Bool in
               data.displayName.lowercased().contains(searchText.lowercased()) || data.userId.lowercased().contains(searchText.lowercased())
        })
           self.tbView.reloadData()

    }
}
...