2012-03-02 17 views
0

私はビュー1を呼び出すビュー2を2つ持っています。私はview2からview1にデータを渡す必要があります。私はデリゲートを設定しようとしています。ここで私はビューコントローラ2で得たものだ:デリゲートを宣言する際の問題

.h file 

@protocol addEventDelegate <NSObject> 

-(void) setAddedEventFlag:(BOOL) hasAddedEvent; 

@end 

@interface AddEventViewController : UIViewController <UITextFieldDelegate, UITextViewDelegate, UIPickerViewDelegate, UIPickerViewDelegate> 

@property (weak, nonatomic) id delegate; //changed from strong to weak 

私はその後、@synthesizeデリゲート.mファイルに

最初のビューコントローラのaddEventDelegateを含めるしようとすると、Xcodeはそれを見つけることができません。

.h file 

#import "AddEventViewController.h" 

@interface FieldReportViewController : UIViewController <UITextFieldDelegate, 
UITextViewDelegate, UIPickerViewDelegate, UIPickerViewDelegate, addEventDelegate> 

「「addEventDelegate」のプロトコル宣言が見つかりません」というエラーが表示されます。

何が間違っていますか?

EDIT:

enter image description here

//コード

enter image description here

エラー:

enter image description here

+0

あなたのエラーメッセージが言うFieldReportViewController.mファイルにaddEventDelegateをインポートすることができます 'addEventDelegat' - あなたはそれがあなたのコードで正しくつづられますよろしいですか? – gregheo

+0

その他の注意事項:1)代議員は保持しないでください。プロパティには 'weak'または' assign'を使うべきです。 2)デリゲートがプロトコルに従うことを期待している場合は、そこにも 'id delegate'と宣言する必要があります。 3)私はあなたが ''をプロトコル定義に入れたくないと確信しています。本当に必要ですか? – gregheo

+0

はい、私はうんざりです、私はちょうどそれを打ちました。それは 'addEventDelegate'です – Padin215

答えて

0

プロトコルを定義するための正しい方法は、問題を解決しています。私は#importループを持っていました。私はすべてのクラスを自分の.hファイルにインポートしていました。私は.hファイルで@Classに変更し、#importを.mファイルに移動して、魅力のように動作します。この1つは私のアプリで働いている

@interface FieldReportViewController()<AddEventDelegate> 
@end 

0
  1. スペルが正しいことを確認してください。
  2. AddEventViewController.h/.mがプロジェクトに追加されていることを確認してください。

それ以外は、あなたが持っているものは問題ありません。

編集

私は示唆している何か他のものは、おそらく命名の競合がある、デリゲートの名前を変更することです。私は 'add'と 'set'で何の問題も見たことはありませんでしたが、私は過去に「new」というプレフィックスを付けるときに問題を見てきました。

また、プロジェクトをきれいにして再構築し、役立つかどうか確認してください。

プロジェクトに複数のターゲットがあり、そのうちの1つにAddEventViewController.h/mを追加しただけで、別のターゲットをビルド/デバッグしている可能性があります。

+0

正しいスペル(FieldReportViewControllerにデリゲートを追加すると、オートコンプリートされます)。 AddEvetnViewController.h/.mファイルが含まれていると、このエラーが発生してアプリがコンパイルされ、正常に実行されます。 – Padin215

+0

Cool。だから、問題は解決しましたか? – Jeremy

+0

悲しいことに、私は投稿する前にそれらのものをチェックした。デリゲートを初めて使用しようとしています。 – Padin215

0

はここ

@protocol addEventDelegate; // forward declaration for delegate property 

@interface AddEventViewController : UIViewController <UITextFieldDelegate, UITextViewDelegate, UIPickerViewDelegate, UIPickerViewDelegate> 
{ 
    id <addEventDelegate> *delegate 
} 

@property (weak, nonatomic) id <addEventDelegate> *delegate; 

@end // interface 

@protocol addEventDelegate <NSObject> 
// @optional // if you want to make it optional 
    -(void) setAddedEventFlag:(BOOL) hasAddedEvent; 
@end // protocol 
+0

このように設定してもエラーは発生します。スクリーンショットを元の投稿に追加しました。 – Padin215

+0

このエラーが発生する前にビルドエラー*を投稿することはできますか? – vipinagg

+0

ok、最初の投稿にアップロード – Padin215

0

あなたは