0

有人可以为s之间的一对一事件传输提供一些示例和正式模式UIViewController吗?我认为NSNotificationCenter不适用于此用例,因为它基于事件总线和广播模式以进行广泛的状态更改,这就是为什么应该将其用于一对多传输。我知道这在这种情况KVO也完全不适用,因为它通常用于经典领域的模型和控制器层之间的通信。所以现在我只知道一对一事件传输的一种方式:委托模式。但可能有更优雅而不是解决方案。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 回答