Подтвердить что ты не робот

UIRefreshControl и UITableView backgroundview

У меня есть UITableViewController, на котором я установил backgroundView. У этого контроллера установлен UIRefreshControl. Проблема в том, что когда я устанавливаю фоновый просмотр, управление обновлением невидимо. Если я удалю фоновое представление, я могу увидеть элемент управления обновлением.

Я что-то делаю неправильно?

4b9b3361

Ответ 1

Причиной такого поведения является то, что в iOS 7 UITableView backgroundView отображается над UIRefreshControl. Не уверен, что это по дизайну или проблеме, но вот обходной путь, который исправил его для меня:

   self.tableView.backgroundView.layer.zPosition -= 1;

В этом коде вы настраиваете свой UITableViewController refreshControl.

Ответ 2

Вы можете попробовать отправить фон на задний план или элемент управления обновлением на передний план. Управление обновлением более чем вероятно, просто сидя в индексе 0.

Ответ 3

Кажется, что UITableViewController подталкивает свой UIRefreshControl к обратному индексу 0 во время перезагрузки (за его "backgroundView" ), независимо от того, какой индекс вы положили в первую очередь. Это то, что сработало для меня (iOS 9): отключить обновление в IB. Создайте код UIRefreshControl и добавьте его в tableView после настройки backgroundView:

    let someView = UIView()

    self.tableView.backgroundView = someView

    let refreshControl = UIRefreshControl()

    refreshControl.addTarget(self, action: #selector(MyTableViewController.refresh(_:)), forControlEvents: .ValueChanged)

    self.tableView.insertSubview(refreshControl, atIndex: 1)

Ответ 4

Эта проблема легко устраняется, если не использовать свойство self.refreshControl в UITableViewController, вместо этого создайте для вас собственное свойство, и оно будет работать нормально.