我有一个带有 6 个按钮和 6 个 subview 的 View Controller (在 Storyboard中)。这些 subview 连接到 IBOutlets 并命名为“mySubView1”、“mySubView2”等:
@property (weak, nonatomic) IBOutlet UIView *mySubView1;
@property (weak, nonatomic) IBOutlet UIView *mySubView2;
我想根据按下的按钮为 subview 的 alpha 值设置动画。所有 6 个按钮都连接到同一个 IBAction(如下),每个按钮都有一个标签(1 到 6)。
如何动态获取 subview 属性名?例如,mySubView1 if sender.tag = 1 例如,在下面的动画 block 中:
- (IBAction)animateSubviewsid)sender {
[UIView animateWithDuration:0.4
delay: 0.0
options: UIViewAnimationOptionCurveEaseOut
animations:^{
self.mySubView1.alpha = 1;
}
completion:^(BOOL finished){
}];
}
所以我需要的是:self.mySubView[sender tag].alpha = 1 之类的东西,但我很难过,所以任何建议都非常感谢。
非常感谢
Best Answer-推荐答案 strong>
1) 为 subview 分配标签
将标签分配给您的 UIViews ,例如,与标签为 1 的按钮对应的 View 可能有标签 101。
- (IBAction)animateSubviewsid)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) 使用动态选择器(回答您的原始问题)
您可以使用返回 SEL 的方法 NSSelectorFromString 。
UIView *subview = [self performSelector:NSSelectorFromString([NSString stringWithFormat"mySubView%d", ((UIButton*)sender).tag])];
关于ios - 将 UIVIew 与 IBAction 中的 UIButton 关联,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/15334752/
|