Swift 4 - вставка новых строк из массива в раздел только с одной статической строкой - PullRequest
0 голосов
/ 18 мая 2018

Мой tableView при запуске имеет раздел n.В каждом разделе есть только одна строка, но в каждой строке есть кнопка, которая добавляет строки раздела из массива.

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
    let postModel = self.postsArray[section];

    if (self.currentSection == section)
    {
        return 1 + (postModel.comments?.count)!;
    }
    else
    {
        print("nie rozszerzone")

        return 1;
    }
}

func numberOfSections(in tableView: UITableView) -> Int
{
    return self.postsArray.count;
}

Я пытался сделать это следующим образом

func showComments(model: MGPostModel, sender: MGCommunityPostTableViewCell)
{
    guard let path = self.communityTableView.indexPath(for: sender) else {
        return;
    }

    print(path)
    print(model.comments?.count as Any)

    self.currentSection = path.section;
    //model.comments.count is equal 3
    let indexPath = IndexPath(row: (model.comments?.count)!, section: path.section);

    print(indexPath)

    self.communityTableView.beginUpdates();
    self.communityTableView.insertRows(at: [indexPath], with: .automatic);
    self.communityTableView.endUpdates();

    //self.communityTableView.reloadRows(at: [indexPath], with: .automatic);
}

Но ответ «Неверный»update: недопустимое количество строк в разделе 0. Количество строк, содержащихся в существующем разделе после обновления (4), должно быть равно количеству строк, содержащихся в этом разделе до обновления (1), плюс или минус числостроки, вставленные или удаленные из этого раздела (1 вставлено, 0 удалено) ... "

Я знаю, что numberOfRows ожидает 4 строки, но почему insertRows пытается вставить только одну, когда следует вставить 3 строки?

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

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

перед этой строкой

let indexPath = IndexPath(row: (model.comments?.count)!, section: path.section);

напишите это, вставив новый элемент

model.comment.append(newelement)
0 голосов
/ 18 мая 2018

@ Абделахад Дарвиш, @Rakesh Patelyes, я знаю это, но.

Строка с индексом 0 - это postModel, который содержит массив с именем comment.Я не хочу добавлять postModel в массив комментариев.

Должно выглядеть следующим образом:

Раздел 0:

  • Строка 0 - Пост-модель
  • Строка 1 - комментарий [0]
  • Строка n = комментарий [n]

Поэтому, если я добавлю что-то в postModel.comment, это разрушит эту иерархию.

0 голосов
/ 18 мая 2018

Шаг 1: - Необходимо обновить данные о количестве строк, которые используются в методе просмотра таблицы.Ex-> myarray.count
postModel.comments? .Count -> обновить его перед вставкой строки.

Шаг 2: - После обновления данных подсчета строк вы можете перейтидля обновления добавьте или удалите строки или перезагрузите представление таблицы.

Примечание. В вашем коде нет обновления данных, которое используется для объявления количества строк в представлении таблицы.

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