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

时间:2011-11-02 19:14:01

标签: iphone objective-c ios xcode uiviewcontroller

我使用以下代码并收到以下错误:

Showing code used and errors with code

编辑:如果您无法阅读上面的图片,请参阅this

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

为什么会出现这些问题,我该怎么做才能解决这些问题?

谢谢!

4 个答案:

答案 0 :(得分:1)

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

更新:为了回应下面的评论主题,如果要推送视图控制器,则需要实际创建导航结构。 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;
}

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

包括ChangePasscode在内的所有内容。也请使用#import而不是#include

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

您似乎在代码的不同位置编译了两次相同的类ChangePasscode。在下列情况下可能会发生这种情况。

  1. 您已将相同的类实现放入两个不同的文件
  2. 您实际上只有这个类的一个实现,但是您也在项目中链接一个框架或库,其中包含一个名称与您的名称完全相同的类。
  3. 如果你错误地让XCode为#import语句自动完成指定'duplicate'类而不是'.h'的'.m'文件,你也可能会收到此错误。
  4. 尝试在整个项目中查找您的课程,并确保项目中只有一个副本可用。

答案 3 :(得分:0)

使用

@class ChangePasscode;

而不是使用

#import ChangePasscode.h