Tableview Controller с динамическим c табличным представлением в ячейке stati c - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть форма внутри контроллера tableview. Последние 3 части формы - это текстовое поле адреса, карта и кнопка сохранения. Когда пользователь начинает вводить в поле адреса, uitableview будет скользить вверх, покрывая карту, чтобы отобразить разные результаты. Когда я устанавливаю для делегата дочернего табличного представления mapTableview и источника данных значение self, в этом случае проблема начинается, на экране просто отображается белый фон. Я пробовал разные решения, но они не работают. Также попробовал это, но источник данных должен исходить от самого контроллера tableview. Dynami c Tableview внутри ячейки Stati c tableview

Когда я создаю массив строк в классе Datasource и помещаю следующие коды в мой контроллер таблиц, приведенные ниже, строки получают отображается в mapTableView.

    var dataSource = DataSource() 


    mapTableView.delegate = dataSource
    maptTableView.delegate = dataSource 

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


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


Обнаружен случай, когда ограничения неоднозначно указывают высоту нуля для представления содержимого ячейки табличного представления. Мы рассматриваем непреднамеренный коллапс и вместо этого используем стандартную высоту


    extension EditProfileTableViewController {

override func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}


override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
          return pois.count
      }

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

       let poi = pois[indexPath.row]

       cell.textLabel?.text = poi.title
       cell.detailTextLabel?.text = poi.subtitle
       cell.detailTextLabel?.numberOfLines = 0

       return cell
     }
 }

и в моем viewDidLoad

tableView.estimatedRowHeight = 60.0;
tableView.rowHeight = UITableView.automaticDimension;

Как правильно разместить представление таблицы внутри таблицы c ячейка таблицы? Пожалуйста, помогите

1 Ответ

0 голосов
/ 13 февраля 2020
  1. Вы должны создать еще один контроллер табличного представления для внутреннего табличного представления. Давайте назовем это MapTableViewController.
  2. Добавьте Container View в ячейку stati c в раскадровке.
  3. Добавьте Table View Controller в это представление контейнера, установите его класс равным MapTableViewController.
  4. Поместите все методы источника данных / делегата для mapTableView из EditProfileTableViewController в MapTableViewController. После этого у EditProfileTableViewController не должно быть методов протокола UITableViewDataSource и UITableViewDelegate.
...