2

ToolbarViewのサブクラスであると呼ばれるクラスがUIViewあり、基本的に、上にUIView消える/再出現する を作成しUIToolbarます。また、ユーザーがビューを画面上でドラッグできるようにする、ToolbarViewcalledのサブクラスもあります。DraggableToolbarView

ToolbarViewツールバーが再表示および非表示になったときに別のオブジェクト/クラスに通知できるように、デリゲートを作成する必要があります。DraggableToolbarViewビューがドラッグされたときに別のオブジェクト/クラスに通知できるように、デリゲートも作成する必要があります。

現在、それぞれに個別のデリゲートを作成していますが、これに適したパターンがあるかどうか疑問に思っています。のデリゲートを 1 つ実装しToolbarView、デリゲート メソッドDraggableToolbarViewをオプションとしてリストしますか? または、デリゲートをサブクラス化する方法はありますか?

これを達成するための最良/最もクリーンな方法は何ですか?

4

3 に答える 3

5

デリゲート メソッドのプロトコルを作成する場合 (常に良い考えです)、別のプロトコルに最初のプロトコルを採用させることができます。これにより、継承のような関係が設定されます。

@protocol ToolbarViewDelegate
// some methods
@end

@protocol DraggableToolbarViewDelegate <ToolBarViewDelegate>
// additional methods
@end
于 2012-05-26T13:33:39.400 に答える
4

inheritingはい、次のプロトコルを使用できます。

@protocol Proto1 

@reqired
-(void) somethingHappened:(id) sender;

@optional
-(void) somethingElseHappened:(id) sender;

@end

@protocol Proto2<Proto1>

// this now contains all of the method signatures found in proto1, with the addition of new ones!

-(void) somethingSpecialHappened:(id) sender;

@end
于 2012-05-26T13:31:17.553 に答える
0

私はあなたがそれを正しくやっていると思います。

UITextViewのサブクラスであると考えてくださいUIScrollView。それぞれに、特定の一連のメッセージに反応する役割を担う独自のデリゲート プロトコルがあります。可視性とドラッグを別々の関心事として考える限り、さまざまなオブジェクトが委任を処理できるようにすることは理にかなっているように思えます。

于 2012-05-26T13:32:06.590 に答える