UITableViewCell с неопределенным количеством элементов

Вы можете запускать SQL-запросы, включая объединение на MongoDB с mongo_fdw из Postgres.

-1
задан Manuel Laguna Matias 17 March 2019 в 23:28
поделиться

2 ответа

Представление стека, безусловно, является способом ограничения любого количества представлений в столбце (или строке). Так что это звучит как лучший путь.

0
ответ дан matt 17 March 2019 в 23:28
поделиться

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

Решение (написано в Swift 4, но общий ответ)

  1. Предполагая, что на любой вопрос может быть не более 8 ответов, создайте 8 кнопок в пользовательской ячейке прототипа , Добавляйте ограничения так, как вам нравится, чтобы они выглядели красиво!
  2. Не забудьте дать вашей ячейке уникальный идентификатор («CustomCell» в моем случае).
  3. Перейдите в «Файл»> «Новый файл»> «Класс касания какао»> выберите подкласс «TableViewCell» & amp; дать ему подходящее имя (в моем случае CustomCellTableViewCell.swift). Он будет содержать все ваши розетки компонентов пользовательского интерфейса.
  4. Выберите ячейку прототипа в вашей раскадровке. Перейдите к третьему значку слева и выберите «CustomCellTableViewCell» в качестве класса.
  5. Control + Перетаскивайте выходы своих кнопок и полей, с которыми вы собираетесь работать, из раскадровки в недавно созданный CustomCellTableViewCell.swift. Теперь файл должен выглядеть примерно так:
class CustomCellTableViewCell: UITableViewCell {
    @IBOutlet weak var question: UILabel!
    @IBOutlet weak var answerOne: UIButton!
    @IBOutlet weak var answerTwo: UIButton!
    ...
    ...
    @IBOutlet weak var answerEight: UIButton!

}
  1. Следующие несколько шагов будут выполнены в функции TableviewDataSource func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell. Не забудьте привести TableviewCell как CustomCell:
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell") as! CustomCellTableViewCell
  1. Поместить все кнопки ответа в массив
var answerButtons = [cell.answerButtonOne, cell.answerButtonTwo..., cell.answerButtonEight]
  1. Теперь вы можете установите текст кнопки ответа в цикле следующим образом:
for i in 0..<answerButtons.count {
  if i < data[indexPath.row].answers.count { // if the answer exists, add it to the button
    cell.answerButton[i].isHidden = false // show button if answer exists 
    cell.answerButton[i].setTitle(data[indexPath.row], for: .normal)
  } else {
    cell.answerButton[i].isHidden = true // hide that button
  }
}
0
ответ дан Keldenl 17 March 2019 в 23:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: