1

我有 2 个类 ClassA:UIView ClassB:UIViewController

我在 ClassA 中有一个 UIButton

该按钮在标题中声明为 A 的 @property

UIButton *selectBtn;    
}
@property (nonatomic, strong) UIButton *selectBtn;

在 A 类的 .m 文件中,按钮被初始化并显示在屏幕上

ClassB 导入 ClassA 的头文件,并从中尝试使用以下内容为我的按钮设置目标和操作

[ClassA.selectBtn addTarget:self action:@selector(getSomething:)     forControlEvents:UIControlEventTouchUpInside];

但是我不断收到一条错误消息,说“在“ClassA”类型的对象上找不到“属性”selectBtn

我究竟做错了什么 ?非常感谢任何帮助或指导

4

3 回答 3

4
[ClassA.selectPicBtn addTarget:self action:@selector(getSomething:)     forControlEvents:UIControlEventTouchUpInside];

使用 selectPcBtn 而不是 selectBtn

于 2013-06-24T12:48:21.130 回答
1

我不知道我是否遗漏了什么,因为其他海报都没有提出这一点,但据我所知,selectBtn 是 ClassA 实例的属性,而不是类本身的属性。尝试获取 ClassA 对象的实例,然后从该实例访问属性:

//WRONG
[ClassA.selectBtn addTarget:self action:@selector(getSomething:) forControlEvents:UIControlEventTouchUpInside];

//Correct
ClassA *aClassAObject = [[ClassA alloc] init];
[aClassAObject.selectBtn addTarget:self action:@selector(getSomething:) forControlEvents:UIControlEventTouchUpInside];

请记住,上面的代码只是一个示例,不太可能是您要查找的对象。如果您在 ClassB 对象内执行此操作,则必须获取 ClassB UIViewController 正在使用的 ClassA UIView。通常,我会在 ClassB 中创建一个属性来访问 ClassA 对象,类似于为 UIButton 对象创建属性的方式,但我不确定在没有看到头文件的情况下如何设置类。

于 2013-06-25T20:19:20.293 回答
0

问题就在这里。

UIButton *selectBtn;    
}
@property (nonatomic, strong) UIButton *selectPicBtn;

selectBtn 和 selectPicBtn 是不同的。属性名称应与变量名称相同。如果你已经声明了一个属性,那么你不需要变量声明。

只声明财产并使用它。self.selectPicBtn = [UIButton....初始化时,初始化Class A

于 2013-06-24T13:03:28.187 回答