1

プロジェクトのデリゲートを作成しました。メイン ビューのコードは次のとおりです。

VedantViewController.h

@protocol VedantDelegate;

@interface VedantViewController : UIViewController
{    
    id <VedantDelegate> delegate;   
}

//some other outlets
@property(nonatomic, assign) id <VedantDelegate> delegate;

@protocol VedantDelegate <NSObject>

- (void)display:(NSString *)JSONResponse;

@end

VedantViewController.m

@synthesize delegate;

[delegate display:jsonResponse];

SecondViewController.h

@interface SecondViewController : UIViewController<VedantDelegate>

- (void)display:(NSString *)JSONResponse;

SecondViewController.m

- (void)display:(NSString *)string
{

}

しかし、コードが到達するブレークポイントを使用してコードをデバッグすると、このコードは正しく機能しません

[delegate display:abc];

ただし、 SecondViewController.mファイルで表示関数を呼び出しません。

私のコードは正しいと思いますが、認識できない間違いがあります

私のプロジェクトの流れを説明させてください。これが問題になる可能性があります

デフォルトでは、VedantViewController ビューが起動され、表示ボタンをクリックすると、ビューの SecondViewController ビューが呼び出されます。これらは、VedantViewController の関数を呼び出すリスト ボタンです。この関数は、[delegate display:jsonResponse] であるデリゲート メソッドを呼び出します。

前もってありがとう、アルン。

4

4 に答える 4

0

プロトコルで確認しているViewControllerは、viewDidLoadまたはそのviewControllerのオブジェクトを作成している場所にこの行を含める必要があります

SecondViewController.mにこの行を追加します

VedantViewControllerObject.delegate = self;

于 2013-03-11T06:16:31.503 に答える
0
@protocol VedantDelegate;

    @interface VedantViewController : UIViewController{


        id<VedantDelegate> delegate;

    }
     //some other outlets
    @property(nonatomic,assign) id<VedantDelegate> delegate;

    @protocol VedantDelegate <NSObject>

    -(void)displayAccounts:(NSString *)JSONResponse;
    -(void)display:(NSString *)JSONResponse;

@end

また、VedantViewControllerObject クラスのオブジェクトにデリゲートを SecondViewController クラスの self として設定し、VedantViewControllerObject クラスのオブジェクトを初期化して割り当てる必要があります。

vedantViewControllerObject.delegate = self;
于 2013-03-11T06:21:16.117 に答える
0

あなたのVedantViewController.hファイルでは、以下のようにメソッドを宣言しました

-(void)displayAccounts:(NSString *)JSONResponse;

しかし、あなたはそれを呼んでいます[delegate display:jsonResponse];

あなたはただ電話しようとする

 [delegate displayAccounts:jsonResponse];

そしてSecondViewController.mで

(void)displayAccounts:(NSString *)string{

    }
于 2013-03-11T06:21:53.713 に答える
0

あなたのコードにはいくつかの問題があります:

  1. デリゲートを 2 番目のビュー コントローラー vedViewObject.delegate = self; に設定します。
  2. デリゲートにメソッドを追加displayAccountsし、メソッドを呼び出すとdisplay、問題が発生する可能性があります。そのメソッドがデリゲート クラスに実装されていない場合。
  3. 次のような if 条件を追加します。if(delegate)[delegate displayAccounts:jsonResponse];
于 2013-03-11T06:23:53.177 に答える