我有一个自定义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子类中,它初始化了单元格。我做错了什么?
你需要创建一个符合协议的委托属性,例如:
#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;