Quel type de magie d'exécution Objective-C dois-je utiliser pour que la propriété d'un objet soit toujours définie sur une valeur par défaut? Par exemple, userInteractionEnabled de UIImageView est toujours faux, mais je souhaite que ma propre sous-classe UIImageview ait toujours la valeur true pour userInteractionEnabled. La même chose est-elle réalisable sans sous-classe UIImageView?Comment définir une propriété d'une classe ou sous-classe UIKit pour tous les futurs instantians?
Répondre
Créez une catégorie avec une méthode init et/ou un constructeur de commodité qui définit la propriété pour vous. La définition des valeurs dans le constructeur est la façon dont toutes les «valeurs par défaut» sont gérées dans Objective-C, et heureusement, les catégories vous permettent d'ajouter n'importe quelle fonctionnalité à une classe tant qu'elle n'a pas besoin de variables d'instance supplémentaires.
Vous pouvez créer une nouvelle catégorie pour UIImageView et ajouter une nouvelle initialiseur:
// UIImageView(CustomInitialization).h
@interface UIImageView (CustomInitialization)
- (id)customInitWithImage:(UIImage *)image;
@end
// UIImageView(CustomInitialization).m
#import "UIImageView(CustomInitialization).h"
@implementation UIImageView (CustomInitialization)
- (id)customInitWithImage:(UIImage *)image
{
if (self = [self initWithImage:image])
{
self.userInteractionEnabled = YES;
}
}
@end
Vous devrez inclure UIImageView(CustomInitialization).h
dans votre code, puis appelez votre initialiseur chaque fois que vous voulez les propriétés par défaut définies:
UIImageView * iview = [[UIImageView alloc] customInitWithImage:[UIImage imageNamed:@"pic.png"]];
- 1. UIKit. Comment définir la couleur transparente?
- 2. Ajouter une bibliothèque de manière permanente pour tous les futurs projets
- 3. Copie de retour Java pour masquer les changements futurs
- 4. ToString() pour une propriété de classe?
- 5. UIKIt: Redimensionner une vue pour accommoder les sous-vues
- 6. Comment tracer tous les messages envoyés à une classe ou instance particulière en Objective-C?
- 7. Comment utiliser jQuery (ou similaire) pour extraire tous les CSS
- 8. Comment définir une propriété imbriquée si l'objet doit être casté?
- 9. Comment définir une classe en Python
- 10. Utilisation de Rhino Mocks Comment puis-je définir une propriété d'un paramètre pour une méthode Mocked?
- 11. Comment définir la propriété UITableViewCellSelectionStyle sur une couleur personnalisée?
- 12. C#: Comment définir la valeur par défaut d'une propriété dans une classe partielle?
- 13. ReflectionClass :: getProperty pour une propriété privée dans une classe héritée
- 14. WPF: comment hériter les valeurs de propriété de tous les contrôles enfants?
- 15. Prototype: trouver tous les éléments avec une certaine classe?
- 16. jQuery Supprimer simultanément une classe CSS de tous les descendants
- 17. Comment définir la largeur de tous les éléments dans une colonne de table avec CSS
- 18. Comment encapsuler une liste possédant une propriété de classe?
- 19. Comment forcer une sous-classe Java à définir une annotation?
- 20. Comment définir PropertyDescriptor par défaut à une propriété?
- 21. Certains snarks sont des boojums: liste de boojums, ou propriété is_boojum sur tous les snarks?
- 22. Expression lambda pour la propriété de classe
- 23. Comment utiliser Reflection pour définir une propriété avec un type de liste <CustomClass>
- 24. Comment remplacer une propriété dans une classe non-héritable?
- 25. Castle Windsor Fluent API: Comment définir une valeur de paramètre de composant pour une propriété configurée
- 26. Utilisation de la réflexion pour définir une propriété d'une propriété d'un objet
- 27. Menu dans uikit
- 28. en utilisant la classe comme une propriété?
- 29. Comment puis-je forcer toutes les classes dérivées à implémenter une méthode ou une propriété abstraite?
- 30. Bugzilla: Définir les autorisations pour rendre un produit en lecture seule pour tous les utilisateurs
Est-ce que je devrais faire cela à l'intérieur de la propriété d'image à la place? Depuis UIImageView peut être créé sans image définie (par exemple créé dans Interface Builder sans jeu d'images) – Boon