Как мне добавить новую кнопку вне прототипа TableCell, а не внутри? - PullRequest
0 голосов
/ 22 сентября 2019

Фон

Я пытаюсь создать приложение, которое позволит людям делиться своими любимыми рецептами.Я застрял на странице "новый рецепт".Эта страница является прокручиваемой таблицей.Первая часть представляет собой контейнерное представление, куда я помещаю все статическое содержимое (изображение рецепта, название рецепта).Вторая часть - это раздел ингредиентов, где отображается название ингредиентов.В третьей части люди описывают рецепт шаг за шагом.

Вопрос

Я пытался создать «Добавить»кнопка, чтобы пользователи могли динамически добавлять новый ингредиент (потому что мы не знаем, сколько ингредиентов заранее).Тем не менее, кажется невозможным установить ограничения для этой кнопки на раскадровке.Я не хочу, чтобы эта кнопка добавления помещалась в ячейку (в этом случае для каждой строки была бы одна кнопка).Я пытаюсь поставить кнопку сразу после последнего ряда.

Я немного исследовал, но не так много прогресса.Ваша помощь приветствуется.Заранее спасибо.

enter image description here

Ответы [ 2 ]

1 голос
/ 22 сентября 2019

Сначала убедитесь, что ingredient и recipe step-by-step другой раздел.

теперь в ingredient общее количество разделов ingredient + еще один ряд, что дополнительный ряд нажмите кнопку.

Например

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

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if section == 0 {
      return ingredient.count + 1
    }
   //do staff
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if indexPath.row == ingredient.count - 2 {
      let cell = tableView.dequeueReusableCell(withIdentifier: addbuttonCellId, for: indexPath) as! AddbuttonCell
      //do your staff 
       return cell
      }

      let cell = tableView.dequeueReusableCell(withIdentifier: ingredientCellId, for: indexPath) as! IngredientCell
      //do staff 
      return cell
}
1 голос
/ 22 сентября 2019

Все в эскизе - это ряд.Наименование ингредиента - строка.Ингредиент 2 зовут ряд.Пошаговая инструкция это строка.Хорошо, так что добавить это строка.Вам просто нужен другой тип ячейки прототипа, который содержит только кнопку Добавить, и в своем источнике данных (cellForRowAt:) убедитесь, что он отображается в правильном месте.

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