问题是没有调用委托方法。 我有这个代码。
GridView.h
#import "EditViewController.h"
@protocol GridViewDelegate<NSObject>
- (void)didSelectCell:(UIView *)cell index:(NSUInteger)index;
@end
@interface GridView : UIView<EditViewDelegate>
@property (nonatomic, assign) id<GridViewDelegate> delegate;
@end
GridView.m
@synthesize delegate;
- (void)handleTap:(UIGestureRecognizer *)gestureRecognizer
{
NSLog(@"handleTap!");
if ([self.delegate respondsToSelector:@selector(didSelectCell:index:)])
{
[self.delegate didSelectCell:gestureRecognizer.view index:0];
}
}
MainViewController.h
#import "EditViewController.h"
#import "GridView.h"
@interface MainViewController : UIViewController<GridViewDelegate>
MainViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
[self.view addSubview:gridView];
GridView *gridView = [[GridView alloc]init];
gridView.delegate = self;
}
- (void)didSelectCell:(UIView *)cell index:(NSUInteger)index
{
NSLog(@"Success!");
}
当这个应用程序构建时,
调用handleTap
方法,但不调用self.delegate didSelectCell
。
在GridView.m中描述didSelectCell
方法时,NSLog正确输出Success!
如何修复它以调用委托方法?
答案 0 :(得分:4)
- (void)viewDidLoad
{
[super viewDidLoad];
[self.view addSubview:gridView];
GridView *gridView = [[GridView alloc]init];
gridView.delegate = self;
}
将网格视图添加到视图后,您将创建一个新的网格视图 因此,您有两个网格视图:一个添加到视图中,一个具有委托。
摆脱
GridView *gridView = [[GridView alloc]init];