2016-03-22 2 views
0

J'ai 16 boutons dans une vue nommée:Ajouter int à la fin d'une variable

@property (strong, nonatomic) IBOutlet WKInterfaceButton *bb1; 
@property (strong, nonatomic) IBOutlet WKInterfaceButton *bb2; 
@property (strong, nonatomic) IBOutlet WKInterfaceButton *bb3; 
@property (strong, nonatomic) IBOutlet WKInterfaceButton *bb4; 
@property (strong, nonatomic) IBOutlet WKInterfaceButton *bb5; 
@property (strong, nonatomic) IBOutlet WKInterfaceButton *bb6; 
@property (strong, nonatomic) IBOutlet WKInterfaceButton *bb7; 
@property (strong, nonatomic) IBOutlet WKInterfaceButton *bb8; 
@property (strong, nonatomic) IBOutlet WKInterfaceButton *bb9; 
@property (strong, nonatomic) IBOutlet WKInterfaceButton *bb10; 
@property (strong, nonatomic) IBOutlet WKInterfaceButton *bb11; 
@property (strong, nonatomic) IBOutlet WKInterfaceButton *bb12; 
@property (strong, nonatomic) IBOutlet WKInterfaceButton *bb13; 
@property (strong, nonatomic) IBOutlet WKInterfaceButton *bb14; 
@property (strong, nonatomic) IBOutlet WKInterfaceButton *bb15; 
@property (strong, nonatomic) IBOutlet WKInterfaceButton *bb16; 

Je veux mettre l'arrière-plan de l'image en fonction de différentes conditions dans une instruction switch. Donc ce que je fais est que j'ai une boucle

for (int i=1; i<=16; i++) { 
int val = [(NSNumber *)[self.valuesArray objectAtIndex:i] intValue]; 
    NSString *newString = [NSString stringWithFormat:@"bb%d",i]; 
    switch (val) { 
       case 4: 
        [**self.bb%d** setBackgroundImageNamed:@"s"]; 
        break; 

       default: 
        break; 
      } 
    } 

Le val est la valeur il est actuellement la cueillette d'un NSArray et au-dessous qui est un newString qui crée les cordes nécessaires. Le texte à l'intérieur ** est quelque chose que je suis coincé de bien sûr, je mets le ** moi pour mettre en évidence le problème. Je veux changer l'image de fond des boutons basés sur différents cas. Donc, si c'est le cas 4 que le changer en s et si c'est 0 le changer en quelque chose d'autre. Alors, comment puis-je y arriver. J'espère que ma question est claire.

+0

Pourquoi avez-vous tout simplement pas la référence de vue parent et attribuer à chaque bouton une étiquette et les récupérer en cas de besoin de la vue référencée par le numéro d'étiquette? –

+0

@Hamdullahshah L'utilisation de la balise pour l'identification de vue est un anti-modèle. – Sulthan

+1

@Hamdullahshah Alors que cela fonctionnerait pour iOS, un 'WKInterfaceObject' n'aurait pas de propriété tag. –

Répondre

0

Vous pouvez le faire si vous ne voulez pas que beaucoup de choses soient modifiées dans la structure de votre application.

  1. Essayez de mettre tous vos 16 objets WKInterfaceButton à NSMutableArray dans votre méthode initWithCoder. (Faire ce tableau global si vous voulez).

    #import "YourClass.h" 
    
    @interface YourClass() 
    
    @property (nonatomic,strong) NSMutableArray * btnArray; 
    
    @end 
    
    @implementation YourClass 
    
    
    - (instancetype)initWithCoder:(NSCoder *)aDecoder 
    { 
        if (self = [super initWithCoder:aDecoder]) { 
    
         _btnArray = [NSMutableArray array]; 
         [_btnArray addObject:bb1]; 
         /* 
         . 
         . 
         . 
         Add all 16 buttons like this here */ 
        } 
        return self; 
    } 
    
  2. Dans un cas particulier dans votre instruction switch obtenir objet par index et puis définissez son image d'arrière-plan.

    for (int i=1; i<=16; i++) { 
    int val = [(NSNumber *)[self.valuesArray objectAtIndex:i] intValue]; 
    NSString *newString = [NSString stringWithFormat:@"bb%d",i]; 
    switch (val) { 
         case 4: 
          [((WKInterfaceButton *)[_btnArray objectAtIndex:i-1]) setBackgroundImageNamed:@"s"]; 
           break; 
    
          default: 
           break; 
         } 
        }