2016-07-17 5 views
0

Я искал для этого, но не смог найти ответ, который работает. Как мне получить доступ к методам делегатов из подкласса?Доступ к делегату в подклассе

Как так:

#import <MapKit/MapKit.h> 

@protocol customMapViewDelegate <MKMapViewDelegate> 
// 
@end 

@interface customSubClass : MKMapView <MKMapViewDelegate> 
// 
@end 

В принципе, я хотел бы получить доступ к делегатам MkMapView в моем подклассе, а не в файле, который я реализующий customSubclass в

ответ

0

Добавьте к этому вашему MKMapView.h. файл:

@protocol MKMapViewDelegate <NSObject> 
@required 
// Put your required delegate methods here 
-(void)myFirstRequiredMethod; 

@optional 
// Pute your optional delegate methods here 

@end 

И тогда вы можете использовать методы делегата в файле customSubClass.m:

@interface customSubClass : MKMapView <MKMapViewDelegate> 

-(void)myFirstRequiredMethod 
{ 
    NSLog(@"Hello"); 
} 

@end 

c.f. ссылка для получения дополнительной информации: http://www.idev101.com/code/Objective-C/delegate.html

EDIT (после комментария от OP) Иногда, вы не хотите, чтобы установить self в качестве делегата от объекта. Вы можете отлично установить другой объект в качестве делегата.

@interface customDelegate : MyCustomDelegateClass <MKMapViewDelegate> 

    -(void)myDelegateMethod 
    { 
     NSLog("hello") 
    } 

    @end 

Затем ваш customSubClass должен иметь свойство типа customDelegate

customSubClass.h:

@interface customSubClass : MKMapView <MKMapViewDelegate> 
{ 
} 

@property (nonatomic, weak) MyCustomDelegateClass *myCustomDelegate; 
@property (nonatomic, strong) MKMapView *myMKMapView; 


@end 

customSubClass.m:

@implementation MainViewController 


- (void)viewDidLoad { 

    [super viewDidLoad]; 
    self.myMKMapView.delegate = self.myCustomDelegate 
} 
} 
+0

Если я не объявить интерфейс в. h file, я не могу получить к нему доступ в качестве подкласса. Поэтому я думаю, что мои квесты on был, как мне получить доступ к нему в качестве подкласса в другом контроллере представления, но отправить всех делегатов обратно в пользовательский делегат? –

+0

Я отредактировал свой ответ. Я не уверен, чтобы полностью понять, чего вы хотите достичь, хотя – Randy

+0

Это больше похоже на это! Благодаря! Разве делегаты не должны быть объявлены слабыми, хотя из-за ссылочных циклов? –

Смежные вопросы