为什么我不能将新的视图控制器推到当前视图上?
我正在使用下面的代码并获取以下错误:
编辑:看到这个,如果你不能读取上面的图像!
“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
。 这可能发生在以下情况。
- 你已经把相同的类实现放到两个不同的文件中
- 您实际上只有一个这个类的实现,但是您也在您的项目中链接了一个框架或库,其中包含一个名称与您的名称完全相同的类。
- 如果您错误地让XCode自动完成#import语句为“重复”类而不是“.h”指定了“.m”文件,也可能会出现此错误。
尝试在整个项目中find您的课程,并确保您的项目中只有一个副本可用。