有人可以为UIViewController
之间的一对一事件转移提供一些示例和正式模式吗?我认为NSNotificationCenter
不适用于此用例,因为它基于广泛状态变化的事件总线和广播模式,这就是为什么应该用于一对多传输的原因。我知道KVO
在这种情况下根本不适用,因为它通常用于经典MVC
领域中模型和控制器层之间的通信。所以现在我只知道一对一事件转移的一种方式:委托模式。但可能会有更优雅的simple
not easy
解决方案。
答案 0 :(得分: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
}
希望你能得到这个想法。请根据您的情况实施。
答案 1 :(得分:0)
您可以将该方法放在视图界面中的协议中:
@protocol MyViewWithButtonDelegateProtocol<NSObject>
-(void)myButtonAction:(id)sender; @end