Предварительная загрузка пользовательских UITableViewCells с последующим повторным их использованием в табличном представлении - PullRequest
0 голосов
/ 06 октября 2018

Я видел решения, в которых необходимо создать все необходимые расширенные UITableViewCells до загрузки табличного представления, которое работает, когда у вас относительно небольшое количество строк.В этом случае ящики таблиц могут быть созданы до вызова reloadData, сохранены в массиве, а затем использованы, как требуется, в методе cellForRowAt вместо использования dequeueReusableCell

let cell = tableView.dequeueReusableCell(withIdentifier: "CustCell") as! CustomCell

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

Ячейки таблицы содержат WKWebview, который загружает веб-страницу, содержащую большое количество кода Javascript;загрузка не быстрая, и табличные представления будут генерировать ячейки так быстро, что они будут эффективно пытаться загружать данные в сети одновременно, так что существует высокая стоимость ЦП, которая может вызвать ошибки при загрузке.В идеале каждая из ячеек табличного представления должна быть последовательно подготовлена ​​к использованию, а затем добавлена ​​в табличное представление.

Мне нужно создать количество ячеек, которые этот UITableView должен видеть в любое время (плюс те, которые он использует заранее), и повторно использовать их через dequeueReusableCell по мере прокрутки пользователем.

МожетЯ могу предварительно создать ячейки, используя метод, описанный ниже, а затем повторно использовать эти ячейки в виде таблицы?т.е. я могу использовать dequeueReusableCell вне контекста метода cellForRowAt?

func setupCells () {
    let cell = tableView.dequeueReusableCell(withIdentifier: "CustCell") as! CustomCell
    cell.delegate = self
    cellArray.append(cell)
}

Спасибо за любые идеи

1 Ответ

0 голосов
/ 06 октября 2018

Да, вы можете инициализировать ячейку снаружи UITableView Method

var arrVideoCell = [VideoTableViewCell]() //Intialize variable

//Intialization
    fileprivate func getNewFeildCell() -> VideoTableViewCell
    {
        let cell = Bundle.main.loadNibNamed("VideoTableViewCell", owner: nil, options: nil)?.first as! CellName
        let urlString = URL(string: "URL")
        cell.viwVideo.loadVideoURL(urlString!)
        return cell
    }

//For Set data in method

func configureAudioData()
{
    for _ in 0...4
    {
        let cell = getNewFeildCell()
        arrVideoCell.append(cell)
    }

    self.tblAudioVideo.reloadData()
}

// Делегат Tableview, DataSource

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
{
        let cell = arrVideoCell[indexPath.row]
        return cell
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...