2013-04-30 99 views
0

我被这个问题困住了。我有以下h文件:找不到“XXXX”的协议声明

#import <UIKit/UIKit.h> 

@protocol MapSettingsViewDelegate 

- (void)settingsDidUpdate:(BOOL)scheme; 

@end 

@interface MapSettingsViewController : UIViewController 

@property (nonatomic, assign) id <MapSettingsViewDelegate> delegate; 
@property (nonatomic, strong) IBOutlet UINavigationBar *navBar; 
@property (nonatomic, strong) IBOutlet UINavigationItem *titleItem; 
@property (nonatomic, strong) IBOutlet UITableView *TableView; 

- (id)init; 
- (IBAction)saveAction:(id)sender; 

@end 

当我声明如下:

Cannot find protocol declaration for 'MapSettingsViewDelegate' 

我有同样的委托:

@interface MapViewController : UIViewController <MapSettingsViewDelegate> 

编译以下消息抱怨在同一个项目中的其他文件中声明编译没有小故障。我花了四个小时试图弄清楚我做错了什么。清理项目并不是什么。

+2

您是否输入.h? – sidyll 2013-04-30 15:39:47

+0

@Eduardo Mauro,我试图帮助你,请告诉我所有#import在MapViewController.h和MapSettingsViewController.h文件中 – 2013-04-30 16:03:42

+0

@ThilinaHewagama包含的所有MapSettingsViewController都在上面。只是UIKit。在MapViewController中包含下列标题: “MapSettingsViewController.h”“PlacemarkSelectionViewController.h” “PopoverView.h” – 2013-04-30 16:04:22

回答

-2

导入MapSettingsViewController.h文件

+0

当然我输入文件。 – 2013-04-30 16:00:00

0

问题解决。 As suggested in this answer,我创建了一个具有不同名称的新类,并复制了以前类中编码的所有类。完美无瑕地工作。看来XCode失去了一些东西的踪迹。

0

您正遇到预处理器问题。两个类都可以相互导入。我想你可以通过在协议声明下面添加@class来解决这个问题,如下所示;并将#import“mapViewController.h”行移动到MapSettingsViewController.m文件中。 @class告诉编译器,您将在其他地方(在.m文件中)包含类内容。

请注意,在MapViewController.h类文件的顶部,您可以像正常一样包含#import“MapSettingsViewController.h”。希望这个帮助。我早些时候遇到了同样的问题。

#import <UIKit/UIKit.h> 

@protocol MapSettingsViewDelegate 

- (void)settingsDidUpdate:(BOOL)scheme; 

@end 

@class MapViewController 

@interface MapSettingsViewController : UIViewController 

@property (nonatomic, assign) id <MapSettingsViewDelegate> delegate; 
... 
...