Swift: couleur d'arrière-plan de changement dans le segment sélectionné de UISegmentControl
Dans ma Swift application, je ne sais pas comment changer BGColor pour le segment sélectionné, seule, dans UISegmentControl. J'ai essayé beaucoup de choses, seulement la couleur de teinte est en train de changer. J'ai eu de la réussite en Objective - C. je ne sais pas comment les convertir pour SWIFT. De bien vouloir me guider. Mes codages ci-dessous:
Objective C
- (IBAction)mySeg:(UISegmentedControl *)sender {
for (int i=0; i<[sender.subviews count]; i++)
{
if ([[sender.subviews objectAtIndex:i]isSelected] )
{
UIColor *tintcolor=[UIColor colorWithRed:255.0/255.0 green:0/255.0 blue:0/255.0 alpha:1.0];
[[sender.subviews objectAtIndex:i] setTintColor:tintcolor]; //HERE SELECTED SEGMENT COLOR ALONE CHANGING
}
else
{
[[sender.subviews objectAtIndex:i] setTintColor:nil];
}
}
}
Swift
@IBAction func mySegAcn(sender: UISegmentedControl) {
for(var i : Int = 0; i < sender.subviews.count; i++)
{
if((sender.subviews[i].isSelected) != nil)
{
//var tint_Color = UIColor(red: 1.0, green: 0, blue: 0, alpha: 1.0)
(sender.subviews[i] as! UIView).tintColor = UIColor .redColor() //HERE WHOLE TINT COLOR IS CHANGING
}
else
{
(sender.subviews[i] as! UIView).tintColor = nil
}
}
}
Sortie
ça fonctionne de mon côté..il peut y avoir un autre problème mais le code pour le changement de segment sélectionné est que seulement..
Salut @Katty ,, u Ne chk fois le code? En Obj - C, le segment Sélectionné, seul le changement de couleur, De Swift, de segment Sélectionné ainsi que de la teinte de la couleur de tous les segments de changer. C'est mon problème.
Salut @Katty ,, u Ne chk fois le code? En Obj - C, le segment Sélectionné, seul le changement de couleur, De Swift, de segment Sélectionné ainsi que de la teinte de la couleur de tous les segments de changer. C'est mon problème.
OriginalL'auteur McDonal_11 | 2015-09-08
Vous devez vous connecter pour publier un commentaire.
De la question avec le code Swift est le traitement de l'option:
(sender.subviews[i].isSelected) != nil
sera vrai même siisSelected
est faux.Essayez d'écrire votre boucle à l'aide de la Swift syntaxe
Au moins dans cette boucle vous sont effectivement des tests à savoir si ou de ne pas la sous-vue est sélectionné à la place de si oui ou non le point de vue n'est pas nul.
où est le "isSelected" drapeau dans votre code en venir?
J'ai essayé votre logique. Fonctionne très bien, j'ai mis à jour ma réponse. Merci beaucoup.
Je suis content que cela a aidé. Options peut être source de confusion lorsque vous démarrez avec Swift.
isSelected n'est pas un membre de UIView
OriginalL'auteur MiKL
J'ai essayé d'utiliser isSelected, il me donne un message d'erreur indiquant que la méthode n'existe pas. Voici une autre façon de le faire sans la méthode isSelected
Utiliser la valeur événement a changé pour le UISegmentControl de trier les segments dans l'ordre par leur origine valeur de x, puis la boucle et de comparer les selectedSegmentIndex de la propriété. Voici un exemple, en supposant une segmentation de contrôle de 4 segments:
Puis dans le viewDidLoad définir la nuance de couleur pour le premier segment sélectionné, dans ce cas, il est le premier:
J'ai été absent de la sorte partie. Simple!
Parfait 🙂 Donc +1
OriginalL'auteur gabo
Swift 4
OriginalL'auteur Abhishek Jain
Comme par @MiKL suggestion, d'après le Code fonctionne bien.
Code
OriginalL'auteur McDonal_11
Votre code pour changer la couleur fonctionne bien, le seul problème est que si l'état ne fonctionne pas de la même manière qu'il fonctionne en objective c.
changer si la condition avec
voir ma réponse mis à jour
Puis-je obtenir ur Skype ou mail ID??? Néanmoins, je suis facin Problème......
expliquez votre problème ou de partager googleDoc lien avec votre projet
drive.google.com/...
OriginalL'auteur Kavita
Pour Swift:
Sur le segment de contrôle cliqué (@IBAction) utilisez le code suivant
créer de la prise de segmentedControl et sur viewDidLoad vous devez appeler la fonction ci-dessus.
OriginalL'auteur Dari
Mise à jour @gabo réponse rapide 4.1 que je n ' avez pas la permission de modifier sa réponse.
Initialement segment sélectionné dans viewDidLoad
OriginalL'auteur Alphonse R. Dsouza