【发布时间】:2013-08-28 07:51:27
【问题描述】:
我创建了一个委托,在关闭当前视图控制器后将数据传回前一个视图控制器。
这就是我设置委托的方式
PaymentViewController.m
-(IBAction)techProcessAction:(id)sender
{
TechProcessPaymentVC *techVC = [[TechProcessPaymentVC alloc]init];
[techVC setTechDelegate:self];
NSLog(@"DELEGATE == %@",techVC.techDelegate);
[self performSegueWithIdentifier:@"techProcess" sender:nil];
}
我可以看到委托已设置
Snap2Door[1765:1c703] DELEGATE == <PaymentDetailViewController: 0x9d3a360>
但是当我在TechProcessPaymentVC 的viewDidLoad 中查看它时,我得到了DELEGATE == (null)
我想这就是我的回调方法没有被调用的原因,它位于PaymentViewController.m。
这就是我在 TechProcessPaymentVC.h 中定义委托的方式
@protocol techProcessDelegate <NSObject>
-(void) techProcessViewControllerDismissed:(NSString *)paymentStatus;
@end
@interface TechProcessPaymentVC : UIViewController<UIWebViewDelegate>
{
id techDelegate;
}
@property (nonatomic, assign) id<techProcessDelegate> techDelegate;
这就是我试图调用PaymentViewController.m中存在的方法的方式
if ([[substrings objectAtIndex:0] isEqualToString:@"failure"]) {
[self.techDelegate techProcessViewControllerDismissed:@"failure"];
[self dismissViewControllerAnimated:YES completion:nil];
}
【问题讨论】:
-
你合成了你的委托属性了吗?
-
是的,虽然我认为这没有必要,因为 XCode 会自动这样做
标签: iphone ios delegates storyboard