Pull-to-refresh не работает с пустым TableView

Когда я очищаю все данные из источника данных и перезагружаю tableView, обновление по запросу становится недоступным. Как я могу включить pull-to-refresh даже для пустого tableView?

override func viewDidLoad() {
    super.viewDidLoad()
    ...
    // Pull to refresh for iPhone
    refreshControl?.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged)

    tableView.tableFooterView = UIView(frame: CGRectZero) // To remove separator line on empty cells
    tableView.estimatedRowHeight = Constants.DetailTableView.estimatedRowHeight
    tableView.rowHeight = UITableViewAutomaticDimension

    setupRefreshControl()
}

private func setupRefreshControl() {
    // If on iPhone, List becomes the pull-to-refresh handler and the delegate
    if UIScreen.mainScreen().traitCollection.horizontalSizeClass == .Compact {
        SyncService.shared.delegate = self
        refreshControl?.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged)
        refreshControl?.tintColor = UIColor.whiteColor()
    } else {
        // Otherwise disable the refresh control in List
        refreshControl = nil
    }
}

person Martin Koles    schedule 15.01.2016    source источник
comment
где ваша функция обновления ()?   -  person appiconhero.co    schedule 15.01.2016
comment
Если ваши данные пусты, вы скрываете табличное представление   -  person Anbu.Karthik    schedule 15.01.2016
comment
Элемент управления обновлением установлен в раскадровке, забыл упомянуть об этом. Это работает хорошо, если ячейка существует. Я не скрываю табличное представление, если оно пустое. Я просто обычно перезагружаю данные каждый раз.   -  person Martin Koles    schedule 15.01.2016
comment
покажите код, в котором вы обновляете/извлекаете данные.   -  person Bista    schedule 15.01.2016
comment
@the_UB: Решено, и спасибо, что указали мне правильное направление. В функции обновления таблицы у меня действительно есть код для отображения некоторого представления «пустой таблицы», чтобы напомнить пользователю, что представление таблицы пусто, и это представление было над представлением таблицы, что блокирует взаимодействие. Я исправил слои вида, и теперь он работает. Большое спасибо.   -  person Martin Koles    schedule 15.01.2016


Ответы (2)


В моем случае мне просто нужно включить подпрыгивание:

self.collectionView.alwaysBounceVertical = YES;

по умолчанию НЕТ. если YES и bounces — YES, даже если содержимое меньше границ, разрешить перетаскивание по вертикали

person Pavlo Razumovskyi    schedule 23.01.2017

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

person Martin Koles    schedule 25.01.2016