【问题标题】:Add int at the end of a variable在变量末尾添加 int
【发布时间】:2016-03-22 10:08:45
【问题描述】:

我在一个名为:

的视图中有 16 个按钮
@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;

我想在 switch 语句中根据不同的条件设置图像的背景。所以我正在做的是我有一个 for 循环

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

val 是它当前从NSArray 中选择的值,低于它的是newString,它正在创建所需的字符串。 ** 里面的文字是我坚持的,当然我把** 放在我的自我中以突出问题。我想根据不同的情况更改按钮的背景图像。因此,如果是4,则将其更改为s,如果是0,请将其更改为其他内容。那么我该如何实现呢。我希望我的问题很清楚。

【问题讨论】:

  • 你为什么不只是拥有父视图的引用,并为每个按钮分配一个标签,并在需要时通过标签号从引用的视图中获取它们?
  • @Hamdullahshah 使用标签进行视图识别是一种反模式。
  • @Hamdullahshah 虽然这适用于 iOS,但 WKInterfaceObject 没有标签属性。

标签: objective-c apple-watch watchos


【解决方案1】:

如果您不想对应用程序的结构进行太多更改,您可以这样做。

  1. 尝试将所有 16 个 WKInterfaceButton 对象放入 initWithCoder 方法中的 NSMutableArray 中。(如果需要,将此数组设为全局)。

    #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. 在你的 switch 语句中的特定情况下,通过索引获取对象,然后设置它的背景图像。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    相关资源
    最近更新 更多