1

自分の代理人を宣言するのに問題があります。まあ...それは正確には真実ではありません:私はそれを宣言しました、そして私がプロジェクトをビルドするとき、コンパイラは問題を報告しません。私はそれを次のように宣言しました:

プロトコルを宣言するためのファイル(enviarDatos.h)を作成しました。

@protocol enviarDatos <NSObject>
    - (void)addItemViewController:(NSMutableArray *)item;
@end

Vista2.h(ViewController)ファイルで、ファイルenviarDatos.hをインポートし、プロパティを宣言しました。

@property (nonatomic, weak) id <enviarDatos> delegare;

Vista2.m(ViewController)ファイルでは、プロトコルメソッドを使用します。

@interface ViewController : UIViewController <enviarDatos> {

そして最後に、ViewController.mファイルにdelegatesメソッドを実装します。

- (void)addItemViewController:(NSMutableArray *)ar {
   origen = ar; 
}

誰かが何か間違っているのを見ますか?最後の関数のコードは実行されません。

ご協力いただきありがとうございます。

編集:

私が必要としているのは、ViewControllerの配列をVista2(別のviewcontroller)から変更することです

4

3 に答える 3

0

ああ、あなたは間違った場所でデリゲートプロパティを宣言しているようです。

enviarDatos.hでプロパティデリゲートを宣言する必要があります。

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

次に、Vista2.mで次のようなことを行います...

EnviarDatos *myObject = [[EnviarDatos alloc] init];
myObject.delegate = self;

次に、EnviarDatosオブジェクトを設定し、Vista2オブジェクトをデリゲートとして割り当てます。

これで、EnviarDatos.mで実行できます...

[self.delegate addItemViewController:someObjectArray];

そして、これはVista2オブジェクトでそのコードを実行します。

デリゲートは、デリゲートを作成するオブジェクト(または他のオブジェクト)にコールバックするために使用されます。オブジェクトを作成し、そのオブジェクトでメソッドを実行する場合は、デリゲートは必要ありません。

于 2012-11-19T08:59:56.193 に答える
0
  1. addItemViewControllerどのような条件で呼び出されるかを言うことができますか?
  2. あなたは正しい方向に進んでいるようですが、デリゲートを次のように設定していますか?

    [yourObject setDelegate: self];
    
  3. デバッグしてみましたか?そこにブレークポイントを設定すると、デバッガーは一時停止しますaddItemViewControllerか?メソッド内でデリゲートがnullではないことを確認できますか?いくつかのコードを投稿するかもしれませんが、代理人の割り当てを除いてあなたは正しいようです、私はあなたがそれをチェックするべきだと思います。

于 2012-11-19T10:10:28.350 に答える
0
Then create delegate property in next view(child view) & set it to self in parent view while pushing or showing child view.

ParentView.m
1.Implement protocol methods
- (void)addItemViewController:(NSMutableArray *)ar
{
    origen = ar; 
}

2.While showing child view
ChildViewController *child = [[ChildViewController alloc] init];
child.delegate = self;
//present child view

ChildView.h
@property (nonatomic, weak) id <enviarDatos> delegare;

 ChildView.m
-(void) anyMethod
{
 if([self.delegate respondsToSelector:@selector(addItemViewController:)])
    {
        [self.delegate addItemViewController:mutableArray];
    }
}
于 2012-11-19T10:10:32.483 に答える