UIView子类不起作用

时间:2011-10-08 18:56:17

标签: iphone objective-c xcode

我有一个我正在处理的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文件中都存在我创建的视图。

仍在学习,提前感谢您的意见。

2 个答案:

答案 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头文件。