2017-01-11 3 views
0

У меня есть UIPageViewController, который может содержать от 0 до 3 UITableViewController элементов. При открытии экрана мое приложение выполняет запрос к серверу, получая ответ, который может содержать до 3 отдельных списков данных (обратите внимание, что списки не могут быть получены отдельно). Каждый список отображается в одном из пунктов UITableViewController. Каждый из них создается только тогда, когда для этого представления есть данные.Стратегия Ios pull-to-refresh для UIPageViewController

Вопрос в том, как бы я идти о реализации тянуть к обновлению, учитывая следующее:

  • Там может не быть UITableView, чтобы обеспечить UIRefreshControl
  • Натяжения бы обновить все детям пейджера не отображается только UITableView.

ответ

1

Прежде всего вам понадобится Scrollview для использования UIRefreshControl, иначе как вы сможете его вытащить. Поэтому давайте доберемся до этого. На вашу вторую часть сложно ответить, потому что вы определяете, как вы хотите ее обновить, без дополнительной информации или кодовых привязок, вам будет нелегко помочь вам. Но я могу сказать, что вы должны делать функции, которые обновляют ваши другие таблицы, поэтому, когда refreshcontrol «активируется», эти функции вызываются.

Вы можете вызывать функции так:

yourRefreshControl.addTarget(target: Any?, action: #Selector, for: UIControlEvents) 

Если вы не знаете, как функция addTarget работает here вопрос о StackOverflow, которые могут помочь

Так что теперь ко второй части. Чтобы добавить UIRefreshControl в UIPageViewController, вам нужно сначала настроить scrollView в качестве подсмотра средства просмотра управления, вы можете сделать это в storyBoard, после его создания и настройки всех ограничений создайте выход для вашего класса UIPageViewController и создайте вторую переменную, называемую refreshControl или, тем не менее, вы хотите его назвать. так что вы будете иметь эти 2 переменные:

@IBOutlet weak var scrollView: UIScrollView! 
var refreshControll: UIRefreshControl! 

Тогда в функции onViewDidLoad, вы просто должны добавить refreshControl к ScrollView и происходит волшебство:]. Для того, чтобы удовлетворить refreshControl установить его примерно так:

self.refreshControll = UIRefreshControl() 
self.scrollView.addSubview(refreshControll) 
refreshControll.addTarget(self, action: #selector(WeatherController.updateWeather), for: UIControlEvents.allEvents) 

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

Приветствия -Jorge