我有一个我正在处理的XCode项目,它有多个由tabBar控制的视图,它会抛出多个错误实例:
"cannot find interface declaration for '~my sub view name~', superclass of '~my sub view name~'
这些子视图是在原始项目之后创建的新文件。每个都有一行代码如下:
@interface meViewAndEdit : meViewAndEdit
我也看不到#import语句。该项目无法建立,我不确定我应该设置这些。我应该引用我的App委托作为超类吗?这里缺少什么?
更新:(已更新)
我更改了我创建的视图的每个头文件的接口语句,如下所示
@interface friends:UIView
但是,似乎我有一个新问题,我将不得不研究:
“UIView”可能无法响应“initWithNibName.bundle”
现在,每个.m文件中都存在我创建的视图。
仍在学习,提前感谢您的意见。
答案 0 :(得分:1)
在Objective-C中声明一个类时,您需要指定类名以及超类。在代码@interface meViewAndEdit : meViewAndEdit
中,您基本上声明了一个类本身的子类。由于您尝试创建UIView
的子类,因此类声明应如下所示:@interface meViewAndEdit : UIView
。
此外,在另一个答案的评论中,您询问是否需要#import
每个班级的应用代表。答案通常是否定的,除非您特别需要访问涉及特定应用程序委托类的内容。
我还要注意,给类大写名称是常规的。例如,它应该是MeViewAndEdit
,而不是meViewAndEdit
。如果它是变量或函数的名称,则只应将第一个字母保留为小写。
编辑:您在更新中遇到错误的原因是您尝试子类化UIViewController,而不是UIView。除此之外,您还可以继承子应用程序委托,而不是将其中任何一个子类化。将您的代码行@interface subviewname : my_app_delegate
更改为@interface subviewname : UIViewController
。您正在尝试创建UIViewController
的子类,而不是my_app_delegate
。
在另一个传统的说明中,将下划线放在类名中是永远好。始终在驼峰案例中命名类,例如MyAppDelegate
,而不是my_app_delegate
。
答案 1 :(得分:0)
您需要#include
所有使用它们的类中的.h头文件。