2013-04-30 105 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; 
... 
... 
相關問題