Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 未调用委托_Iphone_Objective C_Ipad_Delegates_Delegation - Fatal编程技术网

Iphone 未调用委托

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

我有一个子类UITableViewCell,如下所示:

@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方法中设置断点。但是根据您的第一条评论,我们已经知道问题将是什么(它没有设置,所以为零)。更新答案以获得更多帮助。