0

s間の 1 対 1 のイベント転送の例と正式なパターンを誰かが提供できますかUIViewController? このユースケースには当てはまらないと思います。NSNotificationCenterこれは、広範な状態変化のイベント バスとブロードキャスト パターンに基づいているため、1 対多の転送に使用する必要があるからです。通常、古典的な領域のモデルとコントローラー層の間の通信に使用されるため、この場合KVOもまったく当てはまらないことを私は知っています。これで、1 対 1 のイベント転送の方法が 1 つだけわかりました。デリゲート パターンです。しかし、もっとエレガントで解決策ではないかもしれません。MVCsimple easy

4

2 に答える 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 に答える