s間の 1 対 1 のイベント転送の例と正式なパターンを誰かが提供できますかUIViewController
? このユースケースには当てはまらないと思います。NSNotificationCenter
これは、広範な状態変化のイベント バスとブロードキャスト パターンに基づいているため、1 対多の転送に使用する必要があるからです。通常、古典的な領域のモデルとコントローラー層の間の通信に使用されるため、この場合にKVO
もまったく当てはまらないことを私は知っています。これで、1 対 1 のイベント転送の方法が 1 つだけわかりました。デリゲート パターンです。しかし、もっとエレガントで解決策ではないかもしれません。MVC
simple
easy
2 に答える
3
例えば:
ビューでは、アクションは次の宛先に送信されます。
@protocol MapViewDelegate <NSObject>
@required
-(void)MapImageButtonClicked:(UIButton*)sender;
@end
@interface MapView : UIView
{
UIButton *mapButton;
id mapViewDelegate;
}
@property(nonatomic,retain) id mapViewDelegate;
@property(nonatomic,retain) UIButton *mapButton;
.m
[mapButton addTarget:self.delegate action:@selector(mapImageButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
ビューでは、アクションは次から送信されます。
#import "MapView.h"
@interface MapViewController : UIViewController<MapViewDelegate>
{
}
.m
MapView *map = [[MapView alloc] init];
map.delegate = self;
-(void)MapImageButtonClicked:(UIButton*)sender
{
//implement the necessary functionality here
}
アイデアが得られることを願っています。状況に応じて実装してください。
于 2013-04-04T18:06:38.453 に答える
0
そのメソッドをビューのインターフェースのプロトコルに入れることができます:
@protocol MyViewWithButtonDelegateProtocol<NSObject>
-(void)myButtonAction:(id)sender; @end
- ボタンを持つビューにデリゲートと呼ばれるNSObjectまたはUIViewタイプの新しいプロパティを配置します。
- アクションを処理する必要があるビューをそのプロトコルに準拠させ、ビューを開始するときにデリゲート プロパティを self に割り当てます。
- ビュー コントローラーの実装で myButtonAction を実装します。
- [myButton setTarget:delegate action:@selector(myButtonAction:) forControlEvents:UIControlEventTouchUpInside]; を実行するだけです。
于 2013-04-04T18:06:41.180 に答える