0

文字列の配列を返すためにデリゲートプロトコルを使用するViewControllerがあります。同じプロトコルを使用したい別のViewControllerがありますが、これを使用すると、Xcodeで警告が表示されますDuplicate protocol definition of 'SearchDetailsDelegate' is ignored

親ビューコントローラが解析する配列を返すには、これら2つのビューが必要です。私がここで行う必要があることを達成するためのより適切な方法は何でしょうか?重要な価値を観察することは、ここに行く方法でしょうか?

4

2 に答える 2

2

いくつかのオプションがあります:

  1. プロトコルの名前を別の名前に変更します。

  2. 外部プロトコルを作成し、各ビューでそのプロトコルを採用します

  3. 親のタイプを使用して、ParentControllerというプロパティをビューに追加します。

    @property(strong、nonatomic)ParentViewController * ParentController;

(コース外の合成)

次に、viewControllerで、ビューをインスタンス化するときに、viewControllerを親として割り当てます

YourView *childView  = [[YourView alloc]init];
childView.parentController = self;

これで、文字列配列を受け取ることができるメソッドをviewControllerに追加できます。

-(void)setStringsArray:(NSArray*)arr{
     //do what ever you need with the array
     //don't forget to add this method to your .h file so it will be visible
}

最後に、ビューから文字列配列を送信します。[self.parentController setStringsArray:yourArray];

ところで 、どのビューが配列を送信するかを知りたい場合は、次のことができます。

-(void)setStringsArray:(NSArray*)arr fromView:(UIView*)senderView{
     //do what ever you need with the array
     //don't forget to add this method to your .h file so it will be visible
} 

と使用

    [self.parentController setStringsArray:yourArray fromView:self];

ところで2 他のオプションは通知を使用することです。

于 2012-10-15T10:35:26.160 に答える
1

別の.hファイル(Objective Cプロトコルの新しいファイル)でプロトコルを定義し、それを必要なView Controllerに含めます.2つの異なるViewControllerで同じプロトコルを再定義することは、あなたの場合のように推奨されません。

于 2012-10-15T10:28:51.483 に答える