Если использовать табличное представление - то в настройках Storyboard даже есть специальный чекбокс, который включает обновление представления при свайпе вниз. У обычного UIViewController такой опции нет. Но её легко добавить программно:
В методе
viewDidLoad пропишите:
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];//инициализация
refreshControl.backgroundColor = [UIColor purpleColor];//добавим фиолетовый фон
refreshControl.tintColor = [UIColor whiteColor];//установим белый шрифт
[refreshControl addTarget:self action:@selector(reloadData:) forControlEvents:UIControlEventValueChanged];//вешаем обработчик reloadData
//тут у меня есть scrollView, который является самым верхним view. У вас он может называться по-другому
[scrollView addSubview:refreshControl];
[self.view addSubview:scrollView];
Теперь создадим обработчик:
- (void)reloadData:(UIRefreshControl *)refreshControl{
NSLog(@"reloading...");
//тут обновляйте ваши переменные, которые будут использоваться для наполнения представления(текст, фото и т.д.)
if (refreshControl) {
//делаем красивое пояснение
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"d.MM в HH:mm"];//формат даты
NSString
*title
= [NSString stringWithFormat
:@"Обновлено: %@", [formatter stringFromDate
:[NSDate
date]]]; NSDictionary *attrsDictionary = [NSDictionary dictionaryWithObject:[UIColor whiteColor]
forKey:NSForegroundColorAttributeName];
NSAttributedString *attributedTitle = [[NSAttributedString alloc] initWithString:title attributes:attrsDictionary];
refreshControl.attributedTitle = attributedTitle;
[refreshControl endRefreshing];
}
//тут всё обновляем
[self viewDidLayoutSubviews];
[self viewDidLoad];
NSLog(@"reloading done");
}
Всё готово.