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

时间:2013-06-24 12:45:17

标签: ios uiview uiviewcontroller uibutton

我有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“类型的对象上找到

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

3 个答案:

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