自定义代理不工作(iPhone)
问题描述:
我有一个自定义UITableViewCell子类,我想创建一个委托。这是的UITableViewCell子类的.H:自定义代理不工作(iPhone)
#import <UIKit/UIKit.h>
@class InfoTableViewCell;
@protocol InfoTableViewCellDelegate <NSObject>;
@optional
- (void)setTitle:(NSString *)title;
@end
@interface InfoTableViewCell : UITableViewCell <UITextFieldDelegate> {
UITextField *textField;
NSNumber *objectId;
NSNumber *cellId;
NSNumber *isName;
}
@property (nonatomic, retain) UITextField *textField;
@property (nonatomic, retain) NSNumber *objectId;
@property (nonatomic, retain) NSNumber *cellId;
@property (nonatomic, retain) NSNumber *isName;
@end
然而,应用程序崩溃和它说,有没有一种方法叫setDelegate:当我打电话[细胞setDelegate:自我]。在我的UIViewController子类中,它初始化单元格。我究竟做错了什么?
答
您需要创建一个符合协议的委托属性,例如,像这样:
#import <UIKit/UIKit.h>
@class InfoTableViewCell;
@protocol InfoTableViewCellDelegate <NSObject>;
@optional
- (void)setTitle:(NSString *)title;
@end
@interface InfoTableViewCell : UITableViewCell <UITextFieldDelegate> {
id <InfoTableViewCellDelegate> delegate;
UITextField *textField;
NSNumber *objectId;
NSNumber *cellId;
NSNumber *isName;
}
@property (nonatomic, retain) UITextField *textField;
@property (nonatomic, retain) NSNumber *objectId;
@property (nonatomic, retain) NSNumber *cellId;
@property (nonatomic, retain) NSNumber *isName;
@property (nonatomic, assign) id <InfoTableViewCellDelegate> delegate;
@end
不要忘记合成。
答
那么,你必须创建一个delegate
属性并设置属性。
id <InfoTableViewCellDelegate> delegate;
//...
@property (nonatomic, assign) id <InfoTableViewCellDelegate> delegate;
答
是不是UITableView有一个委托,而不是UITableViewCell?
答
很难说没有更多的背景,但似乎要被代替这样做:在您创建和初始化你的
textField.delegate = cell;
可以后的代码? – Vladimir 2011-04-18 15:21:15