Comment “cacher” un UIRefreshControl?
De temps en temps mon tableau vue de ne pas être connecté à un service d'actualisation, et dans ce cas, je ne veux pas le UIRefreshControl d'être présent.
Après je l'ajoute dans viewDidLoad, j'ai essayé de le cacher, dans certaines circonstances, avec setEnabled:
et setHidden:
mais aucune ne semble fonctionner.
- Vous pouvez trouver cela drôle. J'ai essayé sous les associant à la fois le contrôle et la tableview. J'ai des messages interceptés à la recherche de quelque chose à l'effet de levier, pas de chance. Enfin, avec la tableview j'ai changé -sous-vues, de manière à masquer le contrôle, pas de chance. À la fin, si tout ce que vous faire est de simplement ajouter le contrôle à l'aide addSubview, la tableview détient une solide référence. Aucun montant de la clandestinité, de la fixation des cadres de travail.
Vous devez vous connecter pour publier un commentaire.
Essayez de régler votre table view controller est
refreshControl
propriété à néant.endRefreshing
sur l'actualisation de contrôle avant de l'enlever. Vous pouvez également essayer de faire cela dansviewWillAppear
au lieu deviewDidAppear
.[self.refreshControl endRefreshing];
encore les déclencheurs d'alerte si elle est appelée avantself.refreshControl = nil;
.self.refreshControl = nil;
fonctionne parfaitement pour moi aussi longtemps que de l'extérieur de laUIControlEventValueChanged
tiré de la méthode etendRefreshing
méthode a été appelée. Ma seule suggestion serait d'insérer la journalisation le début/la fin de votre actualisation appel etnil
affectation appel à assurez-vous que la cession n'est pas le cas alors qu'un événement d'actualisation est en cours.endRefreshing
avant réglage de la commande ànil
me donne toujours l'avertissement (et oui, j'ai enregistré les appels et fait en sorte deendRefreshing
est appelé avant réglage de la commande ànil
). D'autres idées? -- EDIT: Comme une mesure supplémentaire; j'ai également ajouté undispatch_after
aprèsendRefreshing
de sorte que le contrôle sera mis ànil
après 10 secondes. Malheureusement, j'en ai toujours obtenez le message d'avertissement. -- ENCORE un AUTRE EDIT: Dans ledispatch_after
connecté contrôleisRefreshing
qui a retournéNO
, mais toujours reçu le messageEssayez ceci:
Vous avez plusieurs façons de le faire.
Je pense que la meilleure façon est de faire une vérification dans la méthode viewDidLoad avec:
si ce n'est pas possible, la meilleure façon est de mettre ce code où vous souhaitez masquer le rafraîchissement (je pense à viewWillAppear méthode si la condition)
Il y a une solution très simple, vous pouvez essayer:
[self.refreshControl removeFromSuperview];
J'ai eu une mauvaise expérience lors de l'ensemble
tableView.refreshConrol = nil
, parce que quand je l'ai mis de nouveau à la vieillerefreshControl
, il a commencé l'animation que dans un second, de sorte qu'il ne paraissait pas bon, donc quand j'ai besoin de désactiverrefreshControl
j'utilise:quand j'ai besoin j'utilise:
P. S. Réglage
isHidden, isEnabled, isUserInteractionEnabled
n'a pas aiderVous ne pouvez pas supprimer le UIRefreshControl à l'aide de
setEnabled:NO
,donc, pour cela, vous devez retirer de son superview.J'ai essayé un échantillon à l'aide de l'Accessibilité de classe fourni par Apple.Pour ajouter UIRefreshControl vous pouvez utiliser ceci:
Ensuite mis en œuvre de l'accessibilité de la classe de notification :
Vous pouvez le faire en utilisant bool drapeau pour vérifier la connectivité ,Ici je donne cet exemple à l'aide de l'accessibilité de la classe par apple pour vérifier ma connexion.
Espère que cela fonctionnera pour vous.
Pour masquer actualiser le contrôle et d'éviter d'avertissement suffit d'utiliser
Objective C
[self.refreshControl removeFromSuperview];
Swift
Une vieille question, mais j'étais à la recherche d'une réponse, et rien n'a fonctionné exactement comme je le voulais.
C'est ce qui a fonctionné pour moi:
Swift 4
J'appelle createRefreshControl() quand je veux le contrôle créé, et removeRefreshControl quand je veux qu'il soit retiré.
J'ai dû enlever la même cible que j'ai d'abord ajouté à l'actualisation de contrôle, sinon il serait d'actualiser un temps avant qu'il soit réellement supprimé.
aussi, vous pouvez faire quelque chose comme ceci:
Je l'ai résolu de cette façon:
La meilleure à mettre en œuvre UIRefreshControl est ci-dessous.
Quand il n'y a plus d'enregistrement à charger puis retirez refreshControl en-dessous de la ligne
J'ai mis en œuvre même fonctionner correctement.
J'ai résolu ce problème en appelant
"yourRefreshControl".endEditing()
à l'intérieur de la fonction de rafraîchissement.