我有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];
但我一直收到错误消息说 “属性”selectBtn“未在”ClassA“类型的对象上找到
我做错了什么? 非常感谢任何帮助或指导
答案 0 :(得分:4)
[ClassA.selectPicBtn addTarget:self action:@selector(getSomething:) forControlEvents:UIControlEventTouchUpInside];
使用selectPIcBtn而不是selectBtn
答案 1 :(得分: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对象创建属性的方式,但我不确定如何设置类而不查看头文件。
答案 2 :(得分:0)
问题在这里。
UIButton *selectBtn;
}
@property (nonatomic, strong) UIButton *selectPicBtn;
selectBtn和selectPicBtn是不同的。属性名称应与变量名称相同。如果您已声明属性,则不需要变量声明。
仅声明属性并使用它。初始化时,请在self.selectPicBtn = [UIButton....
Class A