我正在尝试创建一个程序,当我创建一个按钮时,当我点击它时它的alpha变为零。它可能很简单,但它让我疯狂。
你知道,在我的最终项目中,我制作了很多按钮,所以我需要这样做所有代码和不使用故事板。
到目前为止我所拥有的是什么
//mediumboard.h
#import <UIKit/UIKit.h>
@interface MediumBoard : UIViewController
@property (weak, nonatomic) IBOutlet UIScrollView *ScrollMedium;
@end
并在实施中
- (void)viewDidLoad{
UIButton *Button1x1x1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[Button1x1x1 addTarget:self action:@selector(Press1x1x1) forControlEvents:UIControlEventTouchUpInside];
Button1x1x1.frame = CGRectMake(50,50, 80, 130);
[self.view addSubview:Button1x1x1];
}
到目前为止一切正常。它会创建按钮并将其显示在屏幕上。 但是当我尝试实现这个
时-(void)Press1x1x1 {
Button1x1x1.alpha = 0;}
它给出了错误“使用未声明的标识符'Button1x1x1'”
我知道它是一个变量本地化问题,并且变量Button1x1x1已在viewdidload中本地化,但我不知道如何解决这个问题。我把它变成全局变量吗?请记住我不能使用故事板。
附加信息:我的代码中没有任何其他对Button1x1x1的引用。
答案 0 :(得分:1)
您可以使用将发件人作为参数传递的选择器。
[button1x1x1 addTarget:self action:@selector(press1x1x1:) forControlEvents:UIControlEventTouchUpInside];
// ^ emphasized
-(void)press1x1x1:(UIButton *)sender {
sender.alpha = 0;
}
您应该更改变量名称,以便以小写字母开头。大写字母只能用于类名。
答案 1 :(得分:0)
您不必声明全局变量,只需将其声明为实例变量,如下所示:
@interface MediumBoard : UIViewController {
@private
UIButton *myButton_; // Or Button1x1x1, whatever you want to call it
}
@property (weak, nonatomic) IBOutlet UIScrollView *ScrollMedium;
@end