为什么我不能将新的视图控制器推到当前视图上?

我正在使用下面的代码并获取以下错误:

显示使用的代码和错误的代码

编辑:看到这个,如果你不能读取上面的图像!

“ChangePasscode”目前被声明为一个类,是一个带.h和.m文件以及.nib文件的视图控制器。

为什么会发生这些问题,我该怎么办才能解决这些问题?

谢谢!

我要说,你没有导入当前文件中的ChangePasscode.h

更新:为了响应下面的评论线程,如果你想推视图控制器,你需要实际创build一个导航结构。 iOS 5中的首选方式如下:

 // AppDelegate.h // …Other existing code @property (nonatomic, retain) UINavigationController *navController; @end // AppDelegate.m @synthesize navController; - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { navController = [[UINavigationController alloc] initWithRootViewController:viewController]; self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.rootViewController = navController; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; return YES; } 

[NSBundle mainBundle]更改为nil,确保在M文件的顶部有导入的ChangePasscode.h

使用

 @class ChangePasscode; 

而不是使用

 #import ChangePasscode.h 

我想这是一个循环引用的经典案例。 也许这两个类相互引用? 由于此前向声明,当尝试引用具有前向声明的类的类名称或属性时,可能会收到各种警告。

你在哪里都包含了ChangePasscode 。 也使用#import而不是#include

更新 :解决你的ld: duplicate symbol...错误

看来你是在你的代码的不同地方编译两次同一个类的ChangePasscode 。 这可能发生在以下情况。

  1. 你已经把相同的类实现放到两个不同的文件中
  2. 您实际上只有一个这个类的实现,但是您也在您的项目中链接了一个框架或库,其中包含一个名称与您的名称完全相同的类。
  3. 如果您错误地让XCode自动完成#import语句为“重复”类而不是“.h”指定了“.m”文件,也可能会出现此错误。

尝试在整个项目中find您的课程,并确保您的项目中只有一个副本可用。