2013-03-11 88 views
2

我有一個視圖控制器(在故事板中),有6個按鈕和6個子視圖。這些子視圖連接到IBOutlets名稱類似於「mySubView1」,「mySubView2」等:在IBAction中將UIVIew與UIButton相關聯

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

我想動畫,這取決於按下按鈕的子視圖的Alpha值。所有6個按鈕都連接到同一個IBAction(下面),每個按鈕都有一個標籤(1到6)。

如何動態獲取子視圖屬性名稱?例如,如果mySubView1 sender.tag = 1,例如,在動畫下面方框:

- (IBAction)animateSubviews:(id)sender { 

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

       }]; 

}

所以我需要的是這樣的:self.mySubView [發送方標籤]阿爾法= 1級排序的東西,但我很難過,所以任何建議非常感謝。

非常感謝

回答

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])]; 
+0

+1了'performSelector:'方式。尼斯。 – Rakesh 2013-03-11 09:28:27

+0

非常感謝,看起來像其中任何一個都會很好。 – solange 2013-03-11 10:17:06

0
@property (strong, noatomatic) NSArray* arrayForSubViews; 

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

//get the second view 
self.arrayForSubViews[1]; 
+0

不錯的解決方案也非常感謝。 – solange 2013-03-11 10:17:36