2

6 つのボタンと 6 つのサブビューを持つビュー コントローラー (ストーリーボード) があります。これらのサブビューは IBOutlets に接続され、「mySubView1」、「mySubView2」などの名前が付けられます。

@property (weak, nonatomic) IBOutlet UIView *mySubView1;
@property (weak, nonatomic) IBOutlet UIView *mySubView2;

どのボタンが押されたかに応じて、サブビューのアルファ値をアニメーション化したいと考えています。6 つのボタンはすべて同じ IBAction (以下) に接続されており、各ボタンにはタグ (1 ~ 6) があります。

サブビューのプロパティ名を動的に取得するにはどうすればよいですか? たとえば、次のアニメーション ブロックでは、sender.tag = 1 の場合は mySubView1 です。

- (IBAction)animateSubviews:(id)sender {

[UIView animateWithDuration:0.4
                      delay: 0.0
                    options: UIViewAnimationOptionCurveEaseOut
                 animations:^{
                      self.mySubView1.alpha = 1;
                 }
                 completion:^(BOOL finished){

                 }];

}

だから私が必要としているのは次のようなものです:

どうもありがとう

4

2 に答える 2

1

1) サブビューへのタグの割り当て

にタグを割り当てます。UIViewsたとえば、タグ 1 のボタンに対応するビューには、タグ 101 を付けることができます。

- (IBAction)animateSubviews:(id)sender {

[UIView animateWithDuration:0.4
                      delay: 0.0
                    options: UIViewAnimationOptionCurveEaseOut
                 animations:^{
                      UIView *subview = [self.view viewWithTag:((UIButton*)sender).tag + 100]; 
                      subview.alpha = 1;
                 }
                 completion:^(BOOL finished){

                 }];
}

2)動的セレクターの使用(元の質問に答えます)

NSSelectorFromStringを返すメソッドを使用できますSEL

UIView *subview = [self performSelector:NSSelectorFromString([NSString stringWithFormat:@"mySubView%d", ((UIButton*)sender).tag])];
于 2013-03-11T09:16:13.920 に答える
0
@property (strong, noatomatic) NSArray* arrayForSubViews;

if (!self.arrayForSubViews) {
    self.arrayForSubViews = @[ self.mySubView1, self.mySubView2, ... ];
}

//get the second view
self.arrayForSubViews[1];
于 2013-03-11T09:26:10.157 に答える