iOS – 从其超类设置UIButton目标和操作

我有2类ClassA:UIView ClassB:UIViewController

我在ClassA中有一个UIButton

该button在标题中声明,并作为A的@属性

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

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

ClassB导入ClassA的头文件,并从它我试图设置目标和我的button与下面的动作

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

但我不断收到一个错误消息,说“属性”selectBtn“找不到对象的types”ClassA“

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

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

使用selectPIcBtn而不是selectBtn

我不知道是否我错过了一些东西,因为没有其他的海报带来了这个,但从我看到的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中创build一个属性来访问ClassA对象,类似于为UIButton对象创build属性的方式,但是我不知道如何在没有看到头文件的情况下设置类的设置。

问题在这里。

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

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

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