自定义代理不工作(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子类中,它初始化单元格。我究竟做错了什么?

+0

可以后的代码? – Vladimir 2011-04-18 15:21:15

您需要创建一个符合协议的委托属性,例如,像这样:

#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;