Заполнить табличное представление из другого файла Swift - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть контроллер поиска:

См. Это изображение .

На этом изображении вы можете увидеть таблицу, search_textfiled и кнопку расширенного поиска. Поэтому, если я помещу какой-нибудь текст в поле поиска и нажму на значок поиска, он использует его для запуска запроса, и он заполняет результат в таблице. Но при нажатии на расширенный поиск он используется для открытия одного всплывающего окна с некоторым полем text_.

См. Это изображение для 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 = self

search_table.dataSource = self

Если я вызываю эту функцию из контроллера поиска, она работает нормально. Эта функция определена только в контроллере поиска. Но при вызове из контроллера поповера это исключение. Функция ниже показывает вызов функции 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 голосов
/ 17 сентября 2018

вместо заполнения tableView из другого VC, используйте делегаты для заполнения его в своем VC, узнайте больше о делегатах

Здесь

поэтому внутри popover VC вы передаете параметры, необходимые для поиска, и запускаете функцию внутри tableview VC, и выполняете поиск довольно просто

, в вашем случае функция протокола делегата должна содержать весь необходимый поискпараметры

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...