2014-01-13 101 views
0

我有一个ConfirmClaimViewcontroller.h其中委托定义为:委托方法不叫:IOS 6

@protocol ClaimConfirmedDelegate<NSObject> 
@required 
- (void) claimConfirmedDelegate : (NSInteger) tag; 
@end 

@interface ConfirmClaimControllerViewController : UIViewController{ 
    id <ClaimConfirmedDelegate> delegate; 
} 

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil withTag:(NSInteger)tag; 

@property(nonatomic,assign)id delegate; 

@end 

我定义了代表在ClaimViewController.m

- (void) claimConfirmedDelegate:(NSInteger)tag{ 
    NSLog(@"Delegate called"); 
} 

我所说的ConfirmClaimViewController如下(其一个弹出):

ConfirmClaimControllerViewController *confirmClaimController=[[ConfirmClaimControllerViewController alloc] initWithNibName:@"ConfirmClaim" bundle:nil withTag:sender.view.tag]; 
    confirmClaimController.delegate = self; 
    [self.view addSubview:confirmClaimController.view]; 
    [confirmClaimController didMoveToParentViewController:self]; 
    [self addChildViewController:confirmClaimController]; 

弹出窗口有两个按钮。一个点击按钮之一,这段代码被称为:

if([self.delegate respondsToSelector:@selector(claimConfirmed:)]) 
{ 
    [self.delegate claimConfirmedDelegate:self.tagId]; 
} 


[self.view removeFromSuperview]; 
[self removeFromParentViewController]; 

这应该调用委托方法,然后从视图中删除了孩子。孩子被删除,但委托从未被调用。我是新来的,任何帮助将不胜感激。

+0

检查该委托不为零。 大部分时间,程序员忘记设置代表。 – Raz

回答

2

这条线:

if([self.delegate respondsToSelector:@selector(claimConfirmed:)]) 

应该是:

if([self.delegate respondsToSelector:@selector(claimConfirmedDelegate:)]) 
+0

man..Thanks很多!现在工作..完全错过了它。 – user2810114