Как «скрыть» UIRefreshControl?

Иногда мой просмотр таблицы не подключается к службе для обновления, и в этом случае я не хочу, чтобы присутствовал UIRefreshControl.

После того, как я добавлю его в viewDidLoad, я попытался скрыть его при определенных обстоятельствах с помощью setEnabled: и setHidden: но ни один из них не работает.

8 Solutions collect form web for “Как «скрыть» UIRefreshControl?”

Попробуйте настроить свойство refreshControl контроллера табличного представления на refreshControl .

Попробуй это:

 [self.refreshControl removeFromSuperview]; self.refreshControl = nil; 

У вас есть несколько способов сделать это. Я считаю, что лучший способ – проверить метод viewDidLoad с помощью:

 if (condition){ //attach refreshControl } 

если это невозможно, лучше всего поместить этот код, где вы хотите скрыть обновление (я думаю, в методе viewWillAppear в условии if)

 //End refresh control [self.refreshControl endRefreshing]; //Remove refresh control to superview [self.refreshControl removeFromSuperview]; 

Существует очень простое решение, которое вы можете попробовать: [self.refreshControl removeFromSuperview];

Вы не можете удалить UIRefreshControl с помощью setEnabled:NO , поэтому вам нужно удалить его из супервизора. setEnabled:NO попробовал образец с использованием класса Reachability, предоставляемого Apple.

Чтобы добавить UIRefreshControl, вы можете использовать это:

 UIRefreshControl *refContr=[[UIRefreshControl alloc] initWithFrame:CGRectMake(0, 0, 20, 20)]; [refContr setTintColor:[UIColor blueColor]]; [refContr setBackgroundColor:[UIColor greenColor]]; [self.view addSubview:refContr]; [refContr setAutoresizingMask:(UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleLeftMargin)]; [refContr addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged]; 

Затем выдается уведомление класса достижимости:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil]; 

Вы можете сделать это, используя флаг bool, чтобы проверить подключение. Здесь я предоставляю этот пример, используя класс достижимости apple, чтобы проверить мои возможности подключения.

 switch (netStatus) { case NotReachable: { for (UIRefreshControl *subView in [myView subviews]) { if ([subview isKindOfClass:[UIRefreshControl class]]) { [subView removeFromSuperview]; } } //or you could use [UIRefreshControl setHidden:YES]; connectionRequired = YES; break; } case ReachableViaWiFi: { for (UIRefreshControl *subView in [myView subviews]) { if ([subview isKindOfClass:[UIRefreshControl class]]) { [subview removeFromSuperview]; }else{ [self.view addSubview:refContr]; } //or you could use [UIRefreshControl setHidden:NO]; break; } } 

Надеюсь, это сработает для вас.

 [refreshControl setTintColor:[UIColor clearColor]]; 

также вы можете сделать что-то вроде этого:

 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { if (scrollView.contentOffset.y < 0) scrollView.contentOffset = CGPointMake(scrollView.contentOffset.x, 0); } 

Я решил это так:

 -(void)updateUIWithAuthState:(BOOL)isAuthenticated { self.loginButton.enabled = !isAuthenticated; self.loginButton.tintColor = isAuthenticated ? [UIColor clearColor] : nil; self.logoutButton.enabled = isAuthenticated; self.logoutButton.tintColor = isAuthenticated ? nil : [UIColor clearColor]; self.tableView.userInteractionEnabled = isAuthenticated; self.data = nil; [self.tableView reloadData]; } 

Лучше всего реализовать UIRefreshControl ниже.

  -(void)addRefreshControll{ self.refreshControl=[[UIRefreshControl alloc] init]; self.refreshControl.tintColor=[UIColor colorWithRed:0 green:183.0/255.0 blue:213/255.0 alpha:1.0]; self.refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:@"Loading history..."]; [self.refreshControl addTarget:self action:@selector(loadMoreChatFromCoreData) forControlEvents:UIControlEventValueChanged]; self.tableView.refreshControl = self.refreshControl; } 

Когда больше нет записи для загрузки, тогда удалите refreshControl по строке ниже

 self.tableView.refreshControl = nil; 

Я реализовал такой же рабочий тон.

  • Цвет фона UIRefreshControl
  • Как использовать Refresh Control в UITableViewController ios7
  • Ошибка с помощью scrollsToTop и UIRefreshControl
  • UIRefreshController просматривает UICollectionView
  • Обновить контроль над таблицей, когда я вернусь, чтобы просмотреть контроллер
  • Быстрое удаление субвью из супервизора
  • Как скрыть UIRefreshControl, когда UISearchBar становится активным?
  • быстрое движение для обновления
  • Проблемы с UIRefreshControl
  • UITableView UIRefreshControl не показывает свой просмотр в первый раз
  • Измените путь, необходимый для UIRefreshControl, чтобы перейти к UIControlEventValueChanged
  • Interesting Posts

    Проверить версию iOS> = 4.2 и пересмотреть CSS на основе результата

    KVO не работает с UISwitch

    Сбой iOS с недопустимой сигнатурой: 0x80014 при распаковке zip-файла с iOS-устройством с сервера (содержащий файлы .plist и .ipa)

    UIPickerView с пользовательскими представлениями, нарушенными в iOS7

    Как получить языковые курсы валют для покупок в приложениях в iOS?

    Как я могу настроить проект для работы, как шаблон проекта «Window-Based Application» из XCode 4.0, в версии 4.2+?

    Блокировка воздействияМод с наблюдателем значения ключа вызывает сбой

    Использование многопоточности для сохранения данных на iOS

    Вспышка запуска приложения для iOS

    Как сохранить изображение в пользовательский альбом?

    Инструменты Автоматизация скриншот игнорирует программно добавленные элементы управления

    Может ли устройство iOS7 действовать как iBeacon?

    У PVR-текстуры меньше памяти?

    Отображение клавиатуры iPhone

    Swift Generic UIView с протоколом

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.