我試圖實現這個:方法委託不會被調用
UICRouteOverlayMapView
.h file
@protocol DrawingDataDelegate <NSObject>
@required
-(void) drawingSuccessful:(BOOL)done;
@end
@interface UICRouteOverlayMapView : UIView {
id <DrawingDataDelegate> delegate;
}
- (id)initWithMapView:(MKMapView *)mapView;
@property (nonatomic, retain) id <DrawingDataDelegate> delegate;
@end
.m file
@implementation UICRouteOverlayMapView
@synthesize delegate;
- (void)drawRect:(CGRect)rect {
NSLog(@"mesagge");
if ([self.delegate respondsToSelector:@selector(drawingSuccessful:)]) {
[self.delegate drawingSuccessful:YES];
}
}
是採用協議類:
.h file
#import "UICRouteOverlayMapView.h"
@class UICRouteOverlayMapView;
@interface ItineraireViewController : UIViewController <MKMapViewDelegate, UICGDirectionsDelegate, CLLocationManagerDelegate,
DrawingDataDelegate> {
UICRouteOverlayMapView *routeOverlayMapView;
}
.m file
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
routeOverlayMapView = [[UICRouteOverlayMapView alloc] init];
routeOverlayMapView.delegate = self;
}
-(void) drawingSuccessful:(BOOL)done{
NSLog(@"it's done");
}
現在,我在做什麼導致方法drawingSuccessful
不會被調用?
我知道肯定,該方法
- (void)drawRect:(CGRect)rect {
NSLog(@"mesagge");
if ([self.delegate respondsToSelector:@selector(drawingSuccessful:)]) {
[self.delegate drawingSuccessful:YES];
}
}
叫,因爲這被顯示NSLog(@"mesagge");
。請幫助
我做了調試,並在該行設置斷點:
if ([self.delegate respondsToSelector:@selector(drawingSuccessful:)])
和我注意到,這不是一個有效的條件......它從未進入支架......所以這 它不是編譯[self.delegate drawingSuccessful:YES];
。 那麼,什麼是錯的?
你是真的......我已經指向那個。我刪除了這一行,並用下面的代碼替換它:routeOverlayView.delegate = self;但仍然沒有進入if語句! – adrian
我不知道你需要的if語句(見我的更新),但什麼是代表的價值,現在,當你在'drawRect'? – jrturton
你是對的! – adrian