UITableView прокрутка на перезагрузке данных - PullRequest
0 голосов
/ 18 января 2019

У меня есть UITableview в моем проекте.Я получаю новые данные при нажатии кнопки «Добавить новую» в нижнем колонтитуле.вот мое приложение (продемонстрировано) https://pastenow.ru/e327ad5e4978777b280552c4e92f032d

При нажатии на кнопку Добавить новый Btn появляется небольшая прокрутка вверх.Я хочу отключить его и не нужно прокручивать uitableview в любом направлении.вот скриншот (продемонстрированный) https://pastenow.ru/e489ca3b9b5f78c31ad388cf8b3d02b9

Я проверил setcontentoffset uitableview, но он не работает, я не знаю почему.

override func viewDidLoad() {
        super.viewDidLoad()
        for i in 0...10 {
            items.append(i)
        }
    }

    @IBAction func addNewBtnClicked(_ sender: Any) {
        for i in 10...20 {
            items.append(i)
        }
        tableView.reloadData()    
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return items.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "tableCell") as! MyCell
        cell.titleLabel.text = "\(items[indexPath.row])"
        return cell
    }

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Я также искал эту проблему, и до сих пор я не нашел не жестко закодированное решение, но, по крайней мере, нашел следующее решение, которое отлично подходит для моих нужд (оно почти такое же, как у вас). ):

extension UITableView {

    func reloadDataWithoutAnimation(scrollingAt desiredIndexPath: IndexPath, at desiredScrollPosition: UITableView.ScrollPosition) {
        UIView.performWithoutAnimation {
            reloadData()
            scrollToRow(at: desiredIndexPath, at: desiredScrollPosition, animated: false)
        }
    }

}

Использование:

let indexPath = IndexPath(row: desiredRow, section: desiredSection)
tableView.reloadDataWithoutAnimation(scrollingAt: indexPath, at: desiredScrollPosition)

Надеюсь, это поможет.

0 голосов
/ 18 января 2019

Я добавил этот код для работы. я знаю, что это не настоящее решение, но пока работает.

tableView.scrollToRow(at: IndexPath(row: newsList.count - myPageSize, section: 0), at: .bottom, animated: false  )
...