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

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

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

Попробуйте настроить свойство 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; 

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

  • UITableView мерцает с помощью UIRefreshControl
  • Необходимо реализовать механизм тайм-аута для UIRefreshControl.
  • Как установить положение MBProgressHUD в центр в UITableView
  • UIRefreshControl не обновляется при запуске программно
  • UIRefreshControl с UICollectionView в iOS7
  • Ошибка анимации UIRefreshController
  • iOS - авария UIRefreshControl
  • Проблемы с UIRefreshControl
  • Я внедрил UiRefreshControl.My tableview застрял после того, как он обновился
  • Мерцание UIRefreshControl в iOS7
  • Смещение UIRefreshControl
  • Давайте будем гением компьютера.