2017-07-09 1 views
0

J'ai deux variables de couleur:utilisation même variable Dans plusieurs contrôleurs Voir

var blue = UIColor(red:0.08, green:0.49, blue:0.49, alpha:1.0) 
var red = UIColor(red:0.61, green:0.12, blue:0.20, alpha:1.0) 

J'ai déclaré ces variables dans mon EntryViewController, cependant, j'ai besoin aussi de les utiliser dans mon autre ViewControllers. Je me demandais s'il était possible d'utiliser les mêmes variables dans plusieurs ViewControllers? Je sais déjà comment transmettre des données avec des segments, mais je me demandais s'il y avait un moyen de déclarer les couleurs dans leur propre classe et de sous-classer mon ViewControllers avec cette classe. Je vous remercie.

+0

Pourquoi assign 'UIColor()', si vous allez remplacer immédiatement avec 'UIColor (rouge: 0,08, vert: 0,49, bleu: 0,49, alpha: 1,0)'? – Alexander

+0

Je pensais que j'avais besoin de faire comme ça pour le changer plus tard dans mon code, j'ai mis à jour le code avec votre suggestion. Thankyou –

+0

Pourquoi voudriez-vous changer la couleur bleue? C'est une couleur assez cohérente. – Alexander

Répondre

1

Vous pouvez créer ces variables globales, mais cela est mal vu car cela pollue l'espace de nom global. Au lieu de cela, vous pouvez créer ces membres statiques d'un nouveau type. Une classe ou une structure fonctionnerait, mais généralement, un enum est utilisé pour cela, juste pour s'assurer qu'aucune instance du type ne peut être faite.

enum Colors { 
    static let blue = UIColor(red: 0.08, green: 0.49, blue: 0.49) 
    static let red = UIColor(red: 0.61, green: 0.12, blue: 0.20) 
} 
+0

Je suis désolé, cela vous dérangerait-il de m'expliquer davantage? En particulier où je voudrais le déclarer et comment je l'appellerais dans mes autres 'ViewControllers'? –

2

Une approche ici est de créer un extension sur UIColor. Vous pouvez ensuite les rendre globaux à votre module.

extension UIColor { 
    static var myRed: UIColor { 
     return UIColor(red:0.61, green:0.12, blue:0.20, alpha:1.0) 
    } 
    static var myBlue: UIColor { 
     return UIColor(red: 0.08, green: 0.49, blue: 0.49, alpha:1.0) 
    } 
} 
+0

Désolé, je suis nouveau à la programmation. Cela vous dérangerait-il de m'expliquer davantage? –

+0

'UIColor' est immuable. Vous pouvez utiliser une instance partagée au lieu de créer une nouvelle instance pour chaque appelant – Alexander

+0

@ M.I Veuillez lire le guide du langage Swift. Le dépassement de pile n'est pas une alternative à l'apprentissage de la langue. https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html – Alexander