Swift: избегайте прокрутки двух верхних ячеек tableview - PullRequest
0 голосов
/ 28 мая 2020

Есть ли способ остановить прокрутку определенных ячеек в табличном представлении? Я хочу, чтобы верхние 2 ячейки в UITableView были stati c и для других ячеек была включена прокрутка. Свойство с включенной прокруткой находится в tableview, поэтому оно прокручивает все ячейки.

Две верхние ячейки имеют высоту 44,0 каждая. Я попробовал приведенный ниже код, но он по-прежнему прокручивает 2 верхние ячейки.

func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
    isScrolling = true
}

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let startScrollingOffset = 88.0
    if (scrollView.contentOffset.y < CGFloat(startScrollingOffset)) {
        // moved to top
        isScrollDown = false
    } else if (scrollView.contentOffset.y > CGFloat(startScrollingOffset)) {
        // moved to bottom
        isScrollDown = true
    } else {
        // didn't move
    }
}

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
    if isScrollDown == false {
        return
    }
}

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Если вы пытаетесь достичь эффекта, подобного c ячейкам, которые остаются наверху при прокрутке списка, используйте свойство представления заголовка UITableView, вот пример с минимальным кодом, необходимым для выполнения этой работы. Замените headerView теми ячейками, которые вы пытаетесь не прокручивать.

class VC: UITableViewController {

    override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let headerView = UIView()
        headerView.backgroundColor = .purple
        return headerView
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell()
        cell.textLabel?.text = String(describing: indexPath)
        return cell
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 20
    }
}
0 голосов
/ 28 мая 2020

Решением могло бы быть извлечение данных первых двух строк из источника данных (может быть массив) и создание пользовательского представления с этими данными двух строк. затем установите настраиваемое представление в tableviewHeader, используя viewForHeaderInSection

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

...