委托方法不会被调用 - iOS

时间:2015-03-15 09:17:05

标签: ios objective-c

AddBillViewController.h:

@protocol AddBillDelegate <NSObject>

- (void)addBillViewControllerDidAddOneBill;

@end

@interface AddBillViewController : UIViewController

@property (retain, nonatomic)id <AddBillDelegate> delegate;

@end

AddBillViewController.m:

- (IBAction)AddBill:(id)sender {

    [self.delegate addBillViewControllerDidAddOneBill];

    [self dismissViewControllerAnimated:YES completion:nil];
}

HomeViewController.m:

@interface HomeViewController () <AddBillDelegate>

@property (strong, nonatomic)AddBillViewController *abVC;

@end

@implementation HomeViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.abVC = [[AddBillViewController alloc] init];
    self.abVC.delegate = self;
}

- (void)addBillViewControllerDidAddOneBill {
    NSLog(@"Added a bill.");
}

@end

正如您所看到的,AddBillViewController中有一个按钮,当按下按钮时,将调用addBill方法,然后调用HomeViewController中的委托方法addBillViewControllerDidAddOneBill,但事实上,它没有按&#39;吨

1 个答案:

答案 0 :(得分:0)

我认为你没有在这一行中获得参考

self.abVC = [[AddBillViewController alloc] init];

如果您正在执行segue,例如AddBillViewController是您的下一个控制器,请在performSegue:function

中设置委托

AddBillViewController *vc = [segue destinationViewController];
[vc setDelegate:self];