2016-03-22 14 views
0

habe ich 16 Tasten in einer Ansicht mit dem Namen wie:Add int am Ende einer Variablen

@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; 

ich den Hintergrund des Bildes festlegen möchten, basierend auf verschiedenen Bedingungen in einer switch-Anweisung. Also, was ich tue, ist, dass ich eine for-Schleife haben

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; 
      } 
    } 

Der val ist der Wert, den es zur Zeit von einem NSArray Kommissionierung und darunter ist ein newString, die die erforderlichen Zeichenfolgen erstellt. Der Text in ** ist etwas, bei dem ich stecken geblieben bin natürlich habe ich die ** mich selbst, um das Problem zu markieren. Ich möchte das Hintergrundbild der Schaltflächen basierend auf verschiedenen Fällen ändern. Also, wenn es 4 Fall ist, dann ändern Sie es zu s und wenn es 0 ist, ändern Sie es zu etwas anderem. Wie kann ich es erreichen? Ich hoffe meine Frage ist klar.

+0

Warum Sie haben nicht nur die Referenz der Elternansicht und weisen Sie jede Taste einen Tag und holen sie, wenn Bedarf aus der referenzierten Ansicht von Tag-Nummer? –

+0

@Hamdullahshah Das Verwenden des Tags für die Identifizierung der Ansicht ist ein Antipattern. – Sulthan

+1

@Hamdullahshah Während dies für iOS funktionieren würde, hätte ein 'WKInterfaceObject' keine Tag-Eigenschaft. –

Antwort

0

Sie können dies tun, wenn Sie nicht viel in der Struktur Ihrer App geändert werden möchten.

  1. Versuchen Sie, alle Ihre 16 WKInterfaceButton Objekte in NSMutableArray in Ihrem initWithCoder Methode setzen. (Machen Sie dieses Array global, wenn Sie möchten).

    #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. In einem bestimmten Fall in Ihrer Switch-Anweisung Objekt durch den Index erhalten und stellen Sie dann Hintergrundbild es ist.

    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; 
         } 
        }