0

私は主に 2 つのビューで構成された iPhone アプリを持ってfullScreencardViewsますcardViews。と を使用して、カード ビューを表示する際のすべてのアニメーションを処理しましmasterCardViewClassmasterFullScreenViewClass。特定の cardView はすべて masterCardView のサブクラスであり、特定の fullScreenView はすべて masterFullScreenView のサブクラスです。

のメソッドを使用して cardView を提示しmasterFullScreenViewClassます。masterCardView からデリゲート メソッドを使用して cardView を閉じます。ただし、別の cardView から cardView を表示するメソッドを呼び出す際に問題が発生しています。すべての cardView 表示メソッドは、masterFullScreenViewController クラスに含まれています。

必要な場所にコピーしてローカルに貼り付けずに、これらのメソッドにアクセスするにはどうすればよいですか。

4

1 に答える 1

1

それを行う 1 つの方法は、プロトコルを使用することです。

簡単に言えば、(簡単にするために、特定のインデックスで cardViews を呼び出すとしましょう)masterCardView classを提示するプロトコル メソッドを実装します。cardView

masterCardView.h:

@protocol CardPresenterDelegate <NSObject>

- (void)presentCardViewWithIndex:(int)index;

@end

@interface MasterCardView:UIViewController <CardPresenterDelegate>
...

masterCardView.m:

- (void)presentCardViewWithIndex:(int)index
{
// Code for presenting a cardView
}

また、cardView にデリゲート (弱い) プロパティを作成する必要があります。

cardView.h

@property (weak) id<CardPresenterDelegate> cardPresenterDelegate;

次に、cardView でそのプロパティにアクセスすることにより、masterCardView に何かを行うように指示できます。

cardView.m

[self.cardPresenterDelegate presentCardViewWithIndex:5];

ああ、そして、masterCardView で作成するときに cardViews にデリゲート プロパティを設定することを忘れないでください。

masterCardView.mに戻ります。

cardView.cardPresenterDelegate = self;
于 2012-10-16T23:49:23.400 に答える