从不同的Swift文件填充表视图

时间:2018-09-13 06:38:10

标签: ios uitableview swift4

我正在使用搜索视图控制器:

Refer This Image

在此图像中,您可以看到它具有表格视图,search_textfiled和高级搜索按钮。因此,如果我在搜索字段中放入一些文本,然后单击搜索图标,它就会触发查询,并在表中填充结果。但是,当单击“高级搜索”时,它用来打开一个弹出窗口,其中有一些text_field。

Refer this image for Popover

因此,在所有字段中输入值后,我必须进行搜索和激发查询,并填充“搜索”视图控制器中存在的表视图。因此,当单击搜索时,我正在调用full_text_search函数,该函数用于触发查询并在表视图中填充数据。因此在popover控制器中创建搜索控制器的实例并调用搜索功能,但它显示线程异常。

    func full_text_search(){
       self.view.endEditing(true)
        image_contain.removeAll()
        datafiles.removeAll()
        search_table.reloadData()
        search_table.delegate = self
        search_table.dataSource = self
        let defaults = UserDefaults.standard
        let username = defaults.string(forKey: "username")
        let password = defaults.string(forKey: "password")

        var check_icon_flag = 0
        let loginData = String(format: "%@:%@", username!, password!).data(using: String.Encoding.utf8)!
        let base64LoginData = loginData.base64EncodedString()
        let serarchbar_text = search_text.text
        print(serarchbar_text)
        var new_String = "http://xx.xxxx.com:9090/dtm-rest/repositories/xxx/search?q='"
      new_String.append(serarchbar_text!+"'&object-type=dm_document")



     let again_new_String =  new_String.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)
        let url = URL(string: again_new_String!)
        print(again_new_String)
        var request = URLRequest(url: url!)
        request.httpMethod = "GET"
        request.setValue("Basic \(base64LoginData)", forHTTPHeaderField: "Authorization")

##After this use to fetch query result and at last i use refresh table data 

因此在上面的代码中,它用于显示

中的线程异常
  

search_table.reloadData

     

search_table.delegate =自我

     

search_table.dataSource =自我

如果我从搜索控制器调用此函数,则它工作正常。该函数仅在搜索控制器中定义。但是从popover控制器调用会产生异常。下面的函数显示从popover视图控制器调用full_text_search函数。

  @IBAction func Search(_ sender: Any) {

    DispatchQueue.main.asyncAfter(deadline: .now() + 10) {
        print("2sec")
        let check_search = SearchViewController()
        check_search.full_text_search()
    }
   removeAnimate()
}

如果要添加一些值以使用弹出窗口视图进行查询然后进行搜索,该怎么办。

我怎么称呼popover:

 @IBAction func advance_search(_ sender: Any) {
    let popOverVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "types_popover") as! TypesViewController


    self.addChildViewController(popOverVC)
    popOverVC.view.frame = self.view.frame
    self.view.addSubview(popOverVC.view)
    popOverVC.didMove(toParentViewController: self)

}

1 个答案:

答案 0 :(得分:0)

与其从另一个VC填充tableView,不如使用委托将其填充到其自己的VC中,详细了解委托

  

Here

因此在popover VC中,您传递了搜索所需的参数,并在tableview VC中启动了一个函数,并执行了非常简单的搜索

在您的情况下,委托协议功能应包含所有必需的搜索参数