8
votes

Comment puis-je changer le style d'uibarbuttonitem dans le code

J'utilise UIBARBUTTONSystemItemPlay pour jouer mon fichier audio et je veux modifier son style de manière dynamique lorsque je clique dessus. Est-ce possible?, Si oui, alors aidez-moi s'il vous plaît. Ceci est mon code, où _playpause est Iboutlet d'Uibarbuttonsystemitemplay. Merci d'avance. XXX


6 commentaires

Avez-vous essayé avec == au lieu de = ? ... Quoi qu'il en soit, je voudrais utiliser un drapeau ivar bool pour vérifier si l'audio joue ou non.


Oh pardon! Merci beaucoup, je vais vérifier et venir à vous plus tard.


Je l'ai vérifié, mais ça ne marche pas.


UIBARBUTTONSystemitem ne peut pas être récupéré par la propriété style . style est de type uibarbuttonitemstyle .


Le uibarbuttonitem doit être remplacé en utilisant [la méthode décrite dans cette réponse] [1]. [1]: Stackoverflow.com/Questtions/1078597/...


Salut @khalidusman voulait juste demander si l'une des réponses ci-dessous vous a aidé


4 Réponses :


0
votes

Je pense que lorsque le style est défini initialement (c'est-à-dire dans l'interface Builder ou lorsque vous créez le bouton du code), vous ne pouvez pas la modifier.

Votre autre option est de supprimer le bouton du code et de créer un Nouveau à sa place en utilisant un style différent. Vous pouvez appeler cette méthode: xxx

pour plus d'informations sur le uibarbuttonitem Jetez un coup d'oeil à Ceci .


0 commentaires

5
votes

uibarbuttonsystemitemplay ou uibarbutonsysystemitempause ne peut pas être récupéré par une propriété de style. style est de type uibarbuttonitemstyle .

vérifier la documentation ici .

Je suggère de créer deux autres uibarbuttonitem , puis activez ou désactivez (par exemple) les alternativement. Il est également possible de supprimer le bouton visible actuel et d'ajouter un nouveau avec un autre uibarbuttonsystemitem .


0 commentaires

2
votes

Voici une solution assez complète à cela que je viens de mettre en œuvre:

Tout d'abord, définissez Vars pour contenir les deux boutons: p> xxx pré>

(ma compréhension ici est que la barre d'outils est une refonte faible puisqu'il est défini via IB et qu'il a un pointeur fort, mais que les boutons de jeu / pause sont des pointeurs puissants, car nous les créons ci-dessous. Mais mon FU est un peu faible sur ce front comme un peu faible Newbie, donc corrections appréciées.) p>

Deuxièmement, dans IB Créez juste un bouton de lecture (pas de bouton de pause) et attachez-la à la lecture ci-dessus. p>

troisième, configurez cette méthode. : P>

-(IBAction) playAudio:(id)sender
{
    [self.audioPlayer play];
    [self setAsPlaying:YES];
}

-(IBAction) pauseAudio:(id)sender
{
    [self.audioPlayer pause];
    [self setAsPlaying:NO];
}


2 commentaires

En outre, vous n'avez pas besoin d'utiliser les propriétés fort , car vous êtes réinstitutionnellement uibarbuttonitem de toute façon. Vous pouvez utiliser une variable locale uibarbuttonitem dans votre méthode et des propriétés faibles.


Vous pouvez récupérer l'index de manière dynamique du bouton pour supprimer, en effectuant NSInteger Index = [Toolbarbuttons IndexObject: ButTontoremove] [CODE> [TOOBARBUTTONS RETPLEDOBJEINDEX: Index withObject: ButonTaTDD]



0
votes

Oui, vous ne pouvez pas changer le "style" (ce n'est pas vraiment appelé style) une fois qu'il est défini.

Oui, vous pouvez faire un autre bouton qui le corrige.

ici est réutilisable Code qui fait que: xxx

ici, le contrôleur est généralement auto .


0 commentaires