Создавайте новый UITableView каждый раз (не используйте повторно ни одну ячейку)

ios swift uitableview

656 просмотра

2 ответа

У меня есть табличное представление с 3 типами пользовательских ячеек. Интерфейс в раскадровке.

3 разных класса в проекте для ячеек.

Я делаю это в настоящее время, и клетки IBOutlets выходят равными нулю.

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = ListCell()
    cell.configureCell(Data[indexPath.row])
    return cell
}


class ListCell : UITableViewCell {

@IBOutlet weak var selectButton: UIButton!

func configureCell(data: ParamList) {
    selectButton.setTitle("Select " + data.name, forState: .Normal)
}

@IBAction func selectButtonPressed(sender: AnyObject) {
    print(selectButton.currentTitle)
}

}

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

Я хочу создать новые ячейки в памяти для каждой ячейки. Макс. Ячеек будет около 15. Так что проблем с памятью не будет.

Как я могу это сделать?

Автор: Kunal Verma Источник Размещён: 08.11.2019 11:26

Ответы (2)


1 плюс

Решение

Я наконец-то решил это. Вот что я сделал для того же. Я описываю свой процесс, если кто-то еще хочет сделать то же самое.

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

Для того, чтобы ячейки UITableView оставались в памяти, даже если прокрутка за пределами экрана инкапсулирует ваше табличное представление в представление прокрутки, и установите scrollEnabled вашего UITableView в false.

Если вы используете раскадровку, установите ограничение высоты для вашего TableView и создайте IBOutlet для вашего файла кода.

Программно добавлять новые ячейки с разными идентификаторами.

"\(indexPath.section)\(indexPath.row)"

После получения ваших данных установите высоту вашего tableView на множитель вашего количества данных.

т.е.

tableViewHeightConstraint.constant = heightOfOneCell * data.count tableView.delegate = self tableView.dataSource = self

Таким образом, вы можете прокручивать с scrollView, и все ваши ячейки будут все еще в памяти.

Автор: Kunal Verma Размещён: 27.11.2016 02:27

-3 плюса

Установите nil внутри метода dequeueReusableCellWithIdentifier . Таким образом, вы можете получить, сколько ячеек вы хотите в памяти.

Автор: app_rocker Размещён: 20.08.2016 02:54
Вопросы из категории :
32x32