自定义代理不起作用(iPhone)

时间:2011-04-18 15:19:57

标签: iphone delegates

我有一个自定义的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子类中,它初始化单元格。我做错了什么?

4 个答案:

答案 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;