UIRefreshControl и UITableView backgroundVIew
У меня есть UITableViewController, на котором я устанавливаю backgroundView. На этом контроллере установлен UIRefreshControl. Проблема в том, что когда я устанавливаю фоновое представление, элемент управления обновлением невидим. Если я удаляю фоновый вид, я вижу элемент управления обновлением.
Я делаю что-то неправильно?
4 ответа
Причиной такого поведения является то, что в iOS 7 UITableView
"s backgroundView
рисуется над UIRefreshControl
, Не уверен, что это из-за замысла или проблемы, но вот решение, которое исправило это для меня:
self.tableView.backgroundView.layer.zPosition -= 1;
Этот код идет туда, где вы настроили UITableViewController refreshControl
имущество.
Вы можете попробовать отправить фон на задний план или элемент управления обновлением на передний план. Элемент управления обновлением, скорее всего, просто сидит с индексом 0.
Кажется, что 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)
Эта проблема легко решается, если не использовать self.refreshControl
свойство на UITableViewController, вместо этого создайте свое собственное свойство для него, и оно будет работать просто отлично.