2016-12-02 1 views
-3

У меня есть UITableView с двумя массивами в качестве источника данных. У меня также есть один UISegmentedControl для переключения между этими массивами. Я использую метод segmentedControlChanged для вызова метода reloadData. Это прекрасно работает.UITableView не прокручивает автоматически, если изменяется источник данных

Но есть одна проблема.

Например, у arrayOne есть 1 элемент и массивTwo имеет 10 элементов. Итак, если я переключусь на arrayTwo и прокручиваю нижнюю часть таблицы, и после этого переключитесь обратно на arrayOne, просмотр таблицы останется прокруткой вниз, и я не вижу никакого элемента. Но если я начну прокрутку, табличное представление «автоматически переходит» к первому элементу.

Итак, мой вопрос: как я могу активировать это поведение автоматически при изменении источника tabledata?

+0

Думаю, вы должны перезагрузить tableView, когда кнопка сегмента сегмента. – iDeveloper

+0

@iDeveloper i call reloadData() в segmentedControl изменен. – patrickS

+2

вы можете загрузить код фрагмента – iDeveloper

ответ

1

Вы можете использовать любой из следующих двух строк после перезагрузки таблицы

let indexPath = NSIndexPath(forRow: 0, inSection: 0) 
self.tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: .Top, animated: true) 

или

mainTableView.setContentOffset(CGPoint.zero, animated: true) 
0

Во-первых, я не знаю, как изменить источник данных Tableview, но я использую этот метод мои переключатели источника данных.

Я создаю 3 массива;

Я всегда возвращаю arrToReturn для источника данных tableView.

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

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

У вас есть код о настройке прокрутки таблицы, если он неактуальен? Если у вас есть, вы должны проверить это.

 Смежные вопросы

  • Нет связанных вопросов^_^