2010-07-05 2 views
0

У меня есть эта проблема .... в моем viewcontroller.h я определил мой класс как это:iphone сделать личный делегат

myClass* iR; 

и после того, как:

@property (nonatomic,retain) IBOutlet myClass* iR; 

в myClass.h I прибавил:

@protocol myClassDelegate <NSObject> 
-(void) didLogon:(bool)isLogged; 
@end 

и после того, как:

@property (nonatomic, assign) id<myClassDelegate> delegate; 

сейчас, в моем классе, в методе connectionDidFinishLoading (я использовал NSURLConnection для получения регистрационных данных я добавил это:

[self.delegate didLogon:true]; 

в myviewcontroller.h:

<myClassDelegate> 

и в myviewcontroller.m:

-(void)didLogon:(bool)isLogged{ 
... 
} 

но программа заходит в self.delegat e didLogon, но в myviewcontroller.m не пошел ... вы поняли почему ???

ответ

2

Где вы назначаете делегата? Вам нужно что-то вроде этого:

MyViewController *viewController = [[MyViewController alloc] init]; 
self.delegate = viewController; 

Просто, чтобы быть безопасным, если вы звоните методы делегата, назовем их так:

if ([self.delegate respondsToSelector:@selector(didLogon:)]) { 
    [self.delegate didLogon:YES]; 
} 

Таким образом, если делегат не поддерживает этот метод, ваш программа не выйдет из строя, когда она не распознает этот селектор.

+0

спасибо jeff очень полезно это, а также проверить для делегата ... – ghiboz

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