2014-01-13 116 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