2015-03-15 4 views
-1

AddBillViewController.h:метод делегата не дозвонились - IOS

@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, тогда делегат меня thod addBillViewControllerDidAddOneBill в HomeViewController должен быть вызван, однако на самом деле это не так.

+0

Попробуйте @synthesize abVC; & call abVC без self. – DilumN

+0

@BC_Dilum, почему вы думаете, что это должно помочь? –

+0

@BC_Dilum: Почему '@ синтезировать'? –

ответ

0

Я думаю, что вы не получаете ссылку прямо здесь, в этой строке

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

Если вы выполняете SEGUE, как и AddBillViewController ваш следующий контроллер, установите делегат в performSegue: функция

как

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

Удивительно! Оно работает! Супер спасибо! – CokileCeoi

Смежные вопросы