viewdidload中的局部变量

时间:2012-02-08 23:04:10

标签: objective-c cocoa-touch

我正在尝试创建一个程序,当我创建一个按钮时,当我点击它时它的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的引用。

2 个答案:

答案 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