Как отобразить динамическую таблицу внутри статической


#1

Я добавил table view внутрь tableViewController и присвоил первому table view класс но этот класс похоже не поддерживает методы numberOfSections() и tableView() . Выдает ошибку :Method does not override any method from its superclass .Как исправить?


#2

Вы имеете ввиду, что хотите добавить в UITableViewCell (в таблице tableViewController) таблицу?
Создайте еще один TableViewController. В tableViewController инициализируйте его и добавьте в Cell как View.

override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    let newTableVC = NewTableTableViewController() //Создаем объект таблицы которая будет внутри Cell
    cell.addSubview(newTableVC.view) 
}

#3

я хочу добавить элемент TableView в TableViewController


#4

Зачем? Если вам надо несколько таблиц на одном вью, так и используйте обычный вьюконтроллер…


#5

Я в статический TableViewController хочу вставить UITableViewContrroller чтобы отображать информацию из БД внутри этого TableViewController,но чтобы сверху была другая информация(статическая)


#6

Научитесь внятно выражать свои мысли.

Скажите, а вы курсы Ивана смотрели?


#7

https://swiftbook.ru/content/26-index/ - я уверен, этот курс, самое то, что вам сейчас нужно!


#8

Вью и контейнеры ваше решение


#9

конечно смотрел,но там нет того,
что мне сейчас надо


#10

Хорошо. Давайте попробуем по шагам:

Напишите внятно, что вы хотите сделать. Без использования терминологии.

К примеру, Вася получил 20 яблок. 2 яблока Вася съел и 18 отправил в погреб на хранение. Но бандиты узнали, что Вася богат в яблоках и заставляют его показать сколько яблок у него осталось.

Я так наверное быстрей пойму ваш случай. А то tableView, UITableViewController, сплошная мешанина терминов, без привязки к их прямому назначению.


#11

Хорошо,у меня приложения с рейтингом скейт-парков,мне надо чтобы при нажатии на выбранный скейтпарк отображалась его фотография и название а снизу отзывы,так вот эти отзывы берутся из БД и должны отображаться в таблице,у меня получается вывести эти данные только на отдельном TableViewController,а не на том,на котором уже отображаются картинка и название


#12
  1. Делается общая таблица со скейтами.
  2. При тапе на ячейку происходит переход на другой вью контроллер, в котором детально все оформлено.

Не нужна в этом контроллере еще одна таблица. Тут все достаточно просто.

  • общий список парков
  • детализация конкретного парка на другом контроллере

Скиньте ссылку на архив с проектом. Попрорую показать в коде как и что делать


#13

а может вам попробовать сделать кастомную ячейку и идти не от названия и картинки, а от отзывов? Т.е. изначально делаете таблицу, в которой отображаются отзывы. А затем добавляете в ячейку image view и label. Единственное, что в этом случае фотография и название будут повторяться в каждом отзыве. Но возможно оно так и лучше.


#14

дотсаточно одной таблицы для деталей.
делается все просто: кол-во статических ячеек + кол-во ячеек с отзывами и получится та же самая общая таблица.


#15

когда я прописываю в общий класс TableViewController override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { чтобы задать ячейки таблицы с отзывами,то ломается вся таблица и статические ячейки не отображаются,как сделать так чтобы статические ячейки не менялись а динамические менялись,в какое место нужно прописать метод tableView() чтобы заполнить таблицу данными из БД


#16

как мне сделать так,чтобы статические данные оставались и не менялись,а динамическая часть таблицы могла меняться и заполнялась данными из БД


#17

я вам уже написал как это делается.


#18

То есть нужно в ячеку перетащить TableViewCell или что?А куда методы для заполнения таблицы прописывать?


#19

ничего не нужно перетаскивать. все делается в одной таблице.
для статических ячеек создаете свои кастомные классы, для отзывов - свой класс.
регистрируете эти классы для таблицы, все как в обычном случае.
вся фишка в indexPath.row
в методе numberOfRowsInSection возвращаете кол-во статических ячеек + кол-во отзывов
после чего в методе cellForItemAt делаете проверку сперва на статические ячейки
if indexPath.row == 0 {} else if indexPath.row == 1 {} else if indexPath.row == 2 {} else { //тут заполняете отзывы }
единственное но, в месте заполнения отзывов, для получения текущего отзыва из массива, вам нужно будет отнимать кол-во статических ячеек, т.е. let item = feedbackArray[indexPath.row - 3] как пример, т.к. я указал 3 статические ячейки (0, 1 и 2)


#20

что нужно прописать внутри indexPath.row == 0 {} чтобы статические ячейки сохранились