iOS版 - 设定的UIButton的目标和行动从它的超类(iOS - set UIButton t

2019-10-18 06:57发布

我有2类ClassA的:UIView的ClassB的:的UIViewController

我在ClassA的一个UIButton

该按钮在头和作为A的@property声明

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

在一类的.m文件按钮被初始化并显示在屏幕

ClassB的进口ClassA的的头文件,并从中我试图设定目标,并与下面我按钮的动作

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

但我不断收到错误消息说“属性‘selectBtn ClassA的’不是类型的对象中找到‘’

我究竟做错了什么 ? 任何帮助或指导是非常赞赏

Answer 1:

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

使用selectPIcBtn代替selectBtn



Answer 2:

我不知道如果我失去了一些东西,因为没有其他海报的提出这但从我看到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对象的方式,但我不知道你怎么对你的类的设置没有看到的头文件。



Answer 3:

问题就在这里。

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

selectBtn和selectPicBtn是不同的。 属性名应当是相同的变量名。 如果你已经申报了财产,那么你就不需要变量声明。

只有财产申报和使用它。 在初始化,初始化self.selectPicBtn = [UIButton....Class A



文章来源: iOS - set UIButton target and action from its super class