OGeek|极客世界-中国程序员成长平台

标题: ios - 将 UIVIew 与 IBAction 中的 UIButton 关联 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 09:32
标题: ios - 将 UIVIew 与 IBAction 中的 UIButton 关联

我有一个带有 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-推荐答案


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/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4