【问题标题】:how to search the table data如何搜索表格数据
【发布时间】:2019-07-21 05:25:21
【问题描述】:

我的要求:我将在表格视图中列出聊天详细信息。在表格视图顶部,将有一个使用文本字段的搜索功能。基于用户的唯一 ID,搜索应该完成。如果有与用户输入的唯一 ID 没有聊天,然后它必须重定向到另一个称为 chatcreatepage 的屏幕。当我们搜索聊天时,我们将使用一个名为 FIND API 的 API,在该 FIND API 中有一个聊天字典,如果它为空,则创建聊天将被调用。如果该聊天字典不为零,则需要显示聊天列表表视图中的聊天详细信息。当聊天列表页面加载时,我们将调用聊天列表 Api。当我们通过在文本字段中输入唯一 ID 搜索聊天时,我们将获取输入的唯一 ID 和我们拥有的唯一 ID 详细信息的相应详细信息显示在表格视图中。

这是任务,直到聊天列表显示在表格中为止。我真的不知道调用 FIND API 后显示的搜索结果。如果有人帮助我解决它,那就太好了。谢谢提前。我在下面提供代码。

     import UIKit
        import Alamofire
        import SwiftyJSON
        import SDWebImage
        class ChatlistViewController: UIViewController{
             var pro = [[String:Any]]()
             var dict:[String:Any]!
             var idd = ""
             var id = ""
            var chatt:Dictionary = [String:Any]()
            var searchActive : Bool = false
            var filtered:[String] = []
            var data:[String] = []

            @IBOutlet weak var search-text: UITextField!
            @IBOutlet weak var chatlisttable: UITableView!
            override func viewDidLoad() {
                super.viewDidLoad()

                       apical()

            }



            func apical(){

                let acce:String = UserDefaults.standard.string(forKey: "access-tokenn")!
                        print(acce)

                        let headers:HTTPHeaders = ["Authorization":"Bearer \(acce)","Content-Type":"application/X-Access-Token"]

                Alamofire.request(Constants.Chatlist, method: .get, encoding: URLEncoding.default, headers: headers).responseJSON {  response in
                    switch response.result {
                    case .success:
                        print(response)
                        if response.result.value != nil{
                            var maindictionary = NSDictionary()
                            maindictionary = response.result.value as! NSDictionary
                            print(maindictionary)

                            var userdata = NSDictionary()
                            userdata = maindictionary.value(forKey: "data") as! NSDictionary

                            var productsdetails = [[String:Any]]()
                            productsdetails = userdata.value(forKey: "chat") as! [[String:Any]]
                            self.pro = productsdetails
                                 print(self.pro)
                                   self.chatlisttable.reloadData()

                        }else{
                            let Alertcontroller = UIAlertController(title: "Alert", message: "No data found ", preferredStyle: .alert)
                            let CancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
                            Alertcontroller.addAction(CancelAction)
                            self.present(Alertcontroller, animated: true, completion: nil)
                        }
                                break
                            case .failure(let error):

                                print(error)
                            }
                        }


            }

            func searchapicall(){
                idd = searchtext.text!
               let acce:String = UserDefaults.standard.string(forKey: "access-tokenn")!
                print(acce)

                let headers:HTTPHeaders = ["Authorization":"Bearer \(acce)","Content-Type":"application/X-Access-Token"]
                print((Constants.Chatlistsearch)+(idd))
                Alamofire.request((Constants.Chatlistsearch+idd), method: .get, encoding: URLEncoding.default, headers: headers).responseJSON {  response in
                    switch response.result {
                    case .success:
                        //print(response)
                        if response.result.value != nil{
                            var maindictionary = NSDictionary()
                            maindictionary = response.result.value as! NSDictionary

                            var chat:Dictionary = maindictionary.value(forKey: "data") as! [String:Any]

                            var chattt:Dictionary = chat["chat"] as! [String:Any]

                            if (chattt != nil) {

                                print("Find Action")

                                self.chatt = chat["user"] as! [String:Any]
                                print(self.chatt)
                                //var uniqued:String = self.chatt["unique_id"] as! String

                            }else{
                                let viewc = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "ChatViewController") as? ChatViewController
                                self.navigationController?.pushViewController(viewc!, animated: true)
                            }

                        }else{
                            let Alertcontroller = UIAlertController(title: "Alert", message: "No data found on this unique id", preferredStyle: .alert)
                            let CancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
                            Alertcontroller.addAction(CancelAction)
                            self.present(Alertcontroller, animated: true, completion: nil)
                        }
                        break
                    case .failure(let error):

                        print(error)
                    }
                }

            }




        }


        extension ChatlistViewController: UITextFieldDelegate{

            func textFieldShouldReturn(_ textField: UITextField) -> Bool {

                self.searchapicall()

                return true
            }

        }

        extension ChatlistViewController: UITableViewDataSource,UITableViewDelegate {

            func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
                if (searchActive == false){
                return self.pro.count
                }else{
                    return 1
                }
            }

            func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

                var cell = chatlisttable.dequeueReusableCell(withIdentifier: "ChatlistTableViewCell", for: indexPath) as! ChatlistTableViewCell

                if (searchActive == false){

                dict = pro[indexPath.row]
                var recepient = dict["recipient"] as! [String:Any]
                print(recepient)

                var name = recepient["name"] as! String
                print(name)
                id = recepient["unique_id"] as! String
                print(id)
                var image = recepient["avatar"] as! String
                print(image)
                cell.namelbl.text = name
                cell.idlbl.text = id
                cell.imageView!.sd_setImage(with: URL(string:image), placeholderImage: UIImage(named: "Mahi.png"))

                }else{

                    cell.namelbl.text = chatt["name"] as! String
                    cell.idlbl.text = chatt["unique_id"] as! String
                }

                return cell
               self.chatlisttable.reloadData()

            }

        }

//Response format

{
    "success": 1,
    "status": 200,
    "data": {
        "user": {
            "id": 3,
            "unique_id": "10002",
            "name": "nani",
            "avatar": "https://www.planetzoom.co.in/storage/user/avatar/AkgcUFF3QIejMhZuLF4OXnSFHjxNAOo4FuXV3Mgi.jpeg"
        },
        "chat": null
    }
}

【问题讨论】:

标签: ios swift uitableview


【解决方案1】:

您必须使用 UISearchBar 并在 searchbar func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) 的委托方法中调用您的 api。 供参考使用此https://guides.codepath.com/ios/Search-Bar-Guide

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 2011-11-04
    相关资源
    最近更新 更多