Быстрая прокрутка вверх не работает после загрузки больше - PullRequest
0 голосов
/ 21 марта 2019

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

Это мой код, когда пользователь дважды нажимает на элемент панели вкладок.

    func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
      if previousController == viewController {
        if let navVC = viewController as? UINavigationController, let vc = navVC.viewControllers.first as? AssistantMainViewController {
            if vc.isViewLoaded && (vc.view.window != nil) {
                // viewController is visible
                vc.tableView.setContentOffset(CGPoint(x: 0, y: -173), animated: true)
            }
        }
    }
    previousController = viewController
}

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

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

adviceDataSource.loadMoreContent(beforeDay: beforeDate, success: {feedCount in
        if feedCount == 0 {
            self.didGetLastPage = true
        }
        self.tableView.reloadData()
        self.tableView.layoutSubviews()
        self.isRunningRequest = false
    }, error: { (errorString, statusCode) in
        self.isRunningRequest = false

    }) { (MoyaError) in
        self.isRunningRequest = false
    }

Вероятно, проблема заключается в том, что при загрузке большего количества ячеек tableview не 'Не знаю его новый размер контента. Кстати, когда коснитесь строки состояния таблицы, прокрутите вверх до совершенства.Если вам известна функция, которая вызывается, когда пользователь нажимает на строку состояния, она была бы для меня идеальной.

Я работал и искал ее 2 дня, любая помощь?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Замените tableView.layoutSubviews () на tableView.layoutIfNeeded (), он сразу разметит представление таблицы.

И используйте tabbarcontrollerdelegate: Контроллер представления (которому принадлежит табличное представление) будет слушать его. и используйте этот метод

self.primaryTableView.scrollToRow (at: IndexPath, at: UITableViewScrollPosition, animated: Bool)

0 голосов
/ 21 марта 2019

вызовите UITabBarControllerDelegate в вашем классе viewcontroller tableView.

в viewdidload Вызов метода self.tabBarController? .delegate = self

реализовать панель вкладок didselect в вашем классе viewcontroller

func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
    let tabBarIndex = tabBarController.selectedIndex
    if tabBarIndex == 0 {
        self.tableView.setContentOffset(CGPoint.zero, animated: true)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...