Я прочитал документы Apple, и я контролируемый эти форумы и я (успешно) сделать некоторые учебники и сделал свои собственные делегат и я еще не понимаю. Я уверен, что это то, что я отключаю, но поскольку я сделал должную осмотрительность и до сих пор не знаю, что я делаю неправильно, я надеялся, что один из вас сможет мне сказать.Делегат от кнопки крана внутри пользовательского UITableViewCell
Ситуация:
У меня есть обычай UITableViewCell, который имеет в него пуговицу. Когда кнопка нажата, я пытаюсь вытащить форму UIImagePickerController делегата этой пользовательской ячейки. Я могу уловить и ответить на нажатие кнопки без проблем, но поток никогда не переходит к методу делегата. Другими словами, когда я просматриваю код, все в порядке, пока я не попытаюсь перейти от метода целевой кнопки к методу делегата во втором классе. Это просто никогда не называется.
Вот код.
В файле интерфейса для пользовательской ячейки я установить идентификатор для делегата, созданного в IBOutlet для UIButton, и установить метод протокола:
#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
В UIButton подключен к методу getAPic в IB.
В файле реализации для пользовательской ячейки я поставил метод, цели UIButton на ощупь вверх внутри и попытке вызвать метод делегата в делегат:
#import "CustomPicCell.h"
@implementation CustomPicCell
@synthesize cellDelegate;
...
- (IBAction)getAPic {
NSLog(@"You are here ...");
if (cellDelegate && [cellDelegate respondsToSelector:@selector(getPhoto)]) {
[cellDelegate getPhoto];
}
}
В интерфейсе класса делегата я установил его в качестве делегата для пользовательской ячейки:
@interface DelegateClass : UIViewController < ... CustomPicCellDelegate> {
...
в реализации класса делегата попытки вытащить 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];
}
Я не могу понять, почему делегат никогда не называется! Пожалуйста, поймите, я уверен, что что-то пропустил, но я много раз встречался с документами и этими форумами, и я не могу найти то, что я делаю неправильно. Я очень хорошо использую делегатов в других частях кода. Это одно место не работает. Может ли кто-нибудь показать мне, что я толстую? Thanks
Где вы указываете 'cellDelegate'? –
О, я мог бы ударить себя! Оле Бегеманн, ты на 100% прав. Я мог бы поклясться, что я это сделал. но я думаю, что поздно ночью кодирование не мой друг. Я идиот для этого! Большое спасибо. Это решило. Кажется, я всегда проверяю утро три раза. – addzo
Ole, Не могли бы вы также поделиться своим решением, как вы назначили cellDelegate? У меня такой же код, как у вас, и у меня была аналогичная проблема, когда методы делегата, определенные в других диспетчерах представлений, работают отлично. Однако метод делегата, определенный в пользовательском UITableViewCell, не вызывался в UITableViewController, который использовал UITableViewCell. – Jason