Iphone 未调用委托
我有一个子类UITableViewCell,如下所示:Iphone 未调用委托,iphone,objective-c,ipad,delegates,delegation,Iphone,Objective C,Ipad,Delegates,Delegation,我有一个子类UITableViewCell,如下所示: @class MyCell; @protocol MyCellDelegate - (void) viewController:(MyCell*)viewCon userId:(NSNumber*)uid andType:(NSString*)type; @end @interface MyCell : UITableViewCell <MHLazyTableImageCell>{ id <MyCellDe
@class MyCell;
@protocol MyCellDelegate
- (void) viewController:(MyCell*)viewCon userId:(NSNumber*)uid andType:(NSString*)type;
@end
@interface MyCell : UITableViewCell <MHLazyTableImageCell>{
id <MyCellDelegate> delegate;
NSNumber * mid;
NSNumber * uid;
}
- (IBAction) star:(id) sender;
- (IBAction) reply:(id) sender;
- (IBAction) message:(id) sender;
- (void) showMenu;
@property (nonatomic, retain) id <ConvoreCellDelegate> delegate;
@property (nonatomic, retain) NSNumber * mid;
@property (nonatomic, retain) NSNumber * uid;
@interface DetailViewController : UIViewController <UIPopoverControllerDelegate, UITableViewDelegate, UITableViewDataSource, UISplitViewControllerDelegate, RKObjectLoaderDelegate, MHLazyTableImagesDelegate, UITextViewDelegate, ConvoreCellDelegate> {
.......
}
我有另一个UIVewController,如下所示:
@class MyCell;
@protocol MyCellDelegate
- (void) viewController:(MyCell*)viewCon userId:(NSNumber*)uid andType:(NSString*)type;
@end
@interface MyCell : UITableViewCell <MHLazyTableImageCell>{
id <MyCellDelegate> delegate;
NSNumber * mid;
NSNumber * uid;
}
- (IBAction) star:(id) sender;
- (IBAction) reply:(id) sender;
- (IBAction) message:(id) sender;
- (void) showMenu;
@property (nonatomic, retain) id <ConvoreCellDelegate> delegate;
@property (nonatomic, retain) NSNumber * mid;
@property (nonatomic, retain) NSNumber * uid;
@interface DetailViewController : UIViewController <UIPopoverControllerDelegate, UITableViewDelegate, UITableViewDataSource, UISplitViewControllerDelegate, RKObjectLoaderDelegate, MHLazyTableImagesDelegate, UITextViewDelegate, ConvoreCellDelegate> {
.......
}
然而,它并没有进入这一领域。它从不打印调用的委托。这是为什么?在创建
MyCell
之后,您是否实际设置了委托
检查的简单方法是添加一个断点,并查看委托引用是否为nil(0x0)
编辑:根据您下面的评论,非常确定您从未设置代理
创建单元格时,必须将委托对象传递给该单元格,使其具有可调用的内容。否则,您只是向nil对象发送消息
因此,假设您通常在“表视图”控制器中创建单元格:
MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:@"CellID"];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"MyCell" owner:self options:nil];
cell = [topLevelObjects objectAtIndex:0];
cell.delegate = self; // <-------- set the delegate after creation
} else {
NSLog(@"cached cell");
}
//Do you other cell stuff, setting mid and uid for example.
MyCell*单元格=(MyCell*)[tableView dequeueReusableCellWithIdentifier:@“CellID]”;
如果(单元格==nil){
NSArray*topLevelObjects=[[NSBundle mainBundle]loadNibNamed:@“MyCell”所有者:自选项:nil];
单元格=[topLevelObjects对象索引:0];
cell.delegate=self;//设置委托是什么意思?1.在您的-(iAction)star:(id)sender方法中设置断点。但是根据您的第一条评论,我们已经知道问题将是什么(它没有设置,所以为零)。更新答案以获得更多帮助。