Delegar do toque no botão na célula uitableview personalizada
Eu li os documentos da Apple e corroborei esses fóruns e fiz (com sucesso) alguns tutoriais e fiz meus próprios delegados e euainda não entendo alguma coisa. Estou certo de que é algo que estou afastando, mas desde que fiz a devida diligência e ainda não sei o que estou fazendo de errado, esperava que um de vocês pudesse me dizer.
A situação:
Eu tenho um UITableViewCell personalizado que possui um botão. Quando o botão é tocado, estou tentando abrir o UIImagePickerController, formando um delegado dessa célula personalizada. Posso interceptar e responder ao toque no botão, sem problemas, mas o fluxo nunca vai para o método delegado. Em outras palavras, quando passo pelo código, tudo fica bem até tentar passar do método de destino do botão para o método de delegação na segunda classe. Apenas nunca é chamado.
Aqui está o código.
No arquivo de interface da célula personalizada, defino o ID do delegado, configure o IBOutlet para o UIButton e defina o método do protocolo:
#import <UIKit/UIKit.h>
@protocol CustomPicCellDelegate;
@interface CustomPicCell : UITableViewCell <UITextInputTraits> {
UIButton *picButton;
...
id<CustomPicCellDelegate> cellDelegate;
}
@property (nonatomic, retain) IBOutlet UIButton *picButton;
...
@property (nonatomic, assign) id<CustomPicCellDelegate> cellDelegate;
...
- (IBAction)getAPic;
@end
@protocol CustomPicCellDelegate <NSObject>
- (void)getPhoto;
@end
O UIButton está conectado ao método getAPic no IB.
No arquivo de implementação da célula personalizada, coloquei o método que o UIButton visa retocar por dentro e tento chamar o método delegado no delegado:
#import "CustomPicCell.h"
@implementation CustomPicCell
@synthesize cellDelegate;
...
- (IBAction)getAPic {
NSLog(@"You are here ...");
if (cellDelegate && [cellDelegate respondsToSelector:@selector(getPhoto)]) {
[cellDelegate getPhoto];
}
}
Na interface da classe delegada, eu a defino como delegada para a célula personalizada:
@interface DelegateClass : UIViewController < ... CustomPicCellDelegate> {
...
Na implementação da classe delegada, tento puxar o UIImagePickerController:
- (void)getPhoto {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentModalViewController:picker animated:YES];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo (NSDictionary *)info {
[picker dismissModalViewControllerAnimated:YES];
}
Não consigo entender por que o delegado nunca é chamado! Por favor, entenda que tenho certeza de que perdi alguma coisa, mas já estudei os documentos e esses fóruns muitas vezes e não consigo encontrar o que estou fazendo de errado. Estou usando delegados em outras partes do código muito bem. Este ponto não funciona. Alguém pode me mostrar o que eu sou dedilhado de gordura? obrigado