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];
这应该调用委托方法,然后从视图中删除了孩子。孩子被删除,但委托从未被调用。我是新来的,任何帮助将不胜感激。
检查该委托不为零。 大部分时间,程序员忘记设置代表。 – Raz