Just when I thought I had my head around how delegates work, it seems I am missing something.
I've setup a delegate like so:
ViewControllerA.h
@protocol LoginDelegate <NSObject>
-(void)userLoginSuccessful;
@end
@interface BBLoginViewController : BBBaseViewController
@property (weak, nonatomic) id <LoginDelegate> delegate;
@end
ViewControllerA.m
-(void)someMethod
{
if ([self.delegate respondsToSelector:@selector(userLoginSuccessful)]){
[self.delegate userLoginSuccessful];
}
[self dismissViewControllerAnimated:YES completion:nil];
}
ViewControllerB.m
#import "ViewControllerA.h"
@interface ViewControllerB () <UITableViewDataSource, UITableViewDelegate, LoginDelegate>
-(void)viewWillAppear:(BOOL)animated
{
ViewControllerA *loginViewController = [[ViewControllerA alloc]init];
loginViewController.delegate = self;
}
#pragma mark - Login Delegate
-(void) userLoginSuccessful
{
NSLog (@"Delegate fired!");
}
After all this my delegate method does not fire. What am I doing wrong? I looked at this SO answer and when checking the delegate is not nil - it is not. Its set to ViewControllerB
.