我有一个自定义的UITableViewCell子类,我想为其创建一个委托。这是UITableViewCell子类的.h:
#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的方法:当我调用[cell setDelegate:self];在我的UIViewController子类中,它初始化单元格。我做错了什么?
答案 0 :(得分:1)
好吧,你必须创建一个delegate
属性并设置属性。
id <InfoTableViewCellDelegate> delegate;
//...
@property (nonatomic, assign) id <InfoTableViewCellDelegate> delegate;
答案 1 :(得分:1)
您需要创建符合协议的委托属性,例如像这样:
#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
不要忘记合成。
答案 2 :(得分:0)
是不是UITableView有委托,而不是UITableViewCell?
答案 3 :(得分:0)
很难说没有更多的背景,但似乎你想要这样做:
textField.delegate = cell;