自定义委托不工作(iPhone)



我有一个自定义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;

最新更新