@override报错方法未从其超类重写方法?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@override报错方法未从其超类重写方法?相关的知识,希望对你有一定的参考价值。
参考技术A 如果你实现某个接口,必须重写该接口中的所有方法。iOS - 从其超类设置 UIButton 目标和操作
【中文标题】iOS - 从其超类设置 UIButton 目标和操作【英文标题】:iOS - set UIButton target and action from its super class 【发布时间】:2013-06-24 12:45:17 【问题描述】:我有 2 节课 A类:UIView ClassB:UIViewController
我在 ClassA 中有一个 UIButton
按钮在标题中声明为 A 的 @property
UIButton *selectBtn;
@property (nonatomic, strong) UIButton *selectBtn;
在 Class A 的 .m 文件中,按钮被初始化并显示在屏幕上
ClassB 导入 ClassA 的头文件,我正在尝试使用以下内容为我的按钮设置目标和操作
[ClassA.selectBtn addTarget:self action:@selector(getSomething:) forControlEvents:UIControlEventTouchUpInside];
但我不断收到一条错误消息说 “在“ClassA”类型的对象上找不到属性“selectBtn”
我做错了什么? 非常感谢任何帮助或指导
【问题讨论】:
【参考方案1】:[ClassA.selectPicBtn addTarget:self action:@selector(getSomething:) forControlEvents:UIControlEventTouchUpInside];
使用 selectPIcBtn 代替 selectBtn
【讨论】:
您好,观察结果很好,但还是没用。 . .任何其他想法。 . .仍然有同样的问题。 . . (我还在上面的问题中编辑了代码) - 不过我会为你的努力表示支持:谢谢 我没有发现任何其他问题。你合成属性了吗?【参考方案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 对象创建属性的方式,但我不确定在没有看到头文件的情况下如何设置类。
【讨论】:
【参考方案3】:问题来了。
UIButton *selectBtn;
@property (nonatomic, strong) UIButton *selectPicBtn;
selectBtn 和 selectPicBtn 是不同的。属性名称应与变量名称相同。如果你已经声明了一个属性,那么你就不需要声明变量了。
只声明属性并使用它。初始化时,在Class A
中初始化self.selectPicBtn = [UIButton....
【讨论】:
摆脱了按钮声明,仍然没有成功:(以上是关于@override报错方法未从其超类重写方法?的主要内容,如果未能解决你的问题,请参考以下文章
supportedInterfaceOrientations 方法不会覆盖其超类中的任何方法