0

So i have 2 view controllers, and a want the DOAbrirListaViewController.h to be a Delegate for the AddTaskViewControoler.h, in theory i think i have everything setup, but the methods on the DOAbrirListaView never get called.

DOAbrirViewController.h

#import "AddTaskViewController.h"


@interface DOAbrirListaViewController : UITableViewController <NSFetchedResultsControllerDelegate, UIAlertViewDelegate, AddTaskViewControllerDelegate>

DOAbrirViewController.m

-(void)addTaskDidCancel {
    NSLog(@"AddTask Did Cancel");

}
-(void)addTaskDidSave {
    NSLog(@"AddTask Did Save");
}

AddTaskViewController.h

@protocol AddTaskViewControllerDelegate

-(void)addTaskDidSave;
-(void)addTaskDidCancel;

@end

@interface AddTaskViewController : UIViewController

@property (nonatomic, weak) id <AddTaskViewControllerDelegate> delegate;
@property (nonatomic, strong) CDMyLists *currentList;


@end

AddTaskViewController.m

- (IBAction)createButton:(id)sender {
    [self.delegate addTaskDidSave];
    NSLog(@"Create Button");
}

- (IBAction)cancelButton:(id)sender {
    [self.delegate addTaskDidCancel];
    NSLog(@"Cancel Button");
}

The buttons are clicked but the NSLOG's on the addTaskDidSave and AddTaskDidCancel, never get called.

Oleg Sobolev
  • 3,286
  • 2
  • 16
  • 29
André Oliveira
  • 1,105
  • 4
  • 20
  • 53

4 Answers4

0

It seems that delegate is not set properly. Add additional NSLog to cancelButton to check it:

- (IBAction)cancelButton:(id)sender {
    [self.delegate addTaskDidCancel];
    NSLog(@"Cancel Button");
    NSLog(@"self.delegate = %@", self.delegate);
}
Avt
  • 16,927
  • 4
  • 52
  • 72
0

Did you do the following?

#import "AddTaskViewController.h"

@interface DOAbrirListaViewController : UITableViewController <NSFetchedResultsControllerDelegate, UIAlertViewDelegate, AddTaskViewControllerDelegate>

@property (nonatomic, strong) AddTaskViewController *addTaskController;

in .m file:

_addTaskController = [[AddTaskViewController alloc] init];
[_addTaskController setDelegate:self];
emotality
  • 12,795
  • 4
  • 39
  • 60
0

Here is a well working code you need:

definition of DOAbrirListaViewController

@interface DOAbrirListaViewController : UITableViewController <NSFetchedResultsControllerDelegate, UIAlertViewDelegate, AddTaskViewControllerDelegate>

implementation of DOAbrirListaViewController

-(void)viewDidLoad
{
    // set self as a delegate of your taskAddViewController
    [addTaskViewController setDelegate:self];
}

-(void)addTaskDidSaveWithTaskAddViewController:(TaskAddViewController*)taskAddViewController; {
    NSLog(@"AddTask Did Cancel");

}
-(void)addTaskDidCancelWithTaskAddViewController:(TaskAddViewController*)taskAddViewController {
    NSLog(@"AddTask Did Save");
}

definition of AddTaskViewController

@protocol AddTaskViewControllerDelegate;

@interface AddTaskViewController : UIViewController

@property (nonatomic, weak) id <AddTaskViewControllerDelegate> delegate; 
// you need
//a reference
//to the delegate
@property (nonatomic, strong) CDMyLists *currentList;

@end

//So you can transmit your controller to the delegate as a parameter
@protocol AddTaskViewControllerDelegate

-(void)addTaskDidSaveWithTaskAddViewController:(TaskAddViewController*)taskAddViewController;
-(void)addTaskDidCancelWithTaskAddViewController:(TaskAddViewController*)taskAddViewController;

@end

implementation of AddTaskViewController

- (IBAction)createButton:(id)sender 
{
    [self.delegate addTaskDidSaveWithTaskAddViewController:self];
    NSLog(@"Create Button");
}

- (IBAction)cancelButton:(id)sender {
    [self.delegate addTaskDidCancelWithTaskAddViewController:self];
    NSLog(@"Cancel Button");
}
Oleg Sobolev
  • 3,286
  • 2
  • 16
  • 29
0

The problem was that, i was not setting the delegate, i just need to do that in the prepareForSegue, before performing the Segue.

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    if ([segue.identifier isEqualToString:@"addTask"]) {
        NSLog(@"addTask Segue");

        AddTaskViewController *atvc = (AddTaskViewController *)[segue destinationViewController];
        atvc.delegate = self; // Was missing that
        atvc.currentList = self.currentList;



    }

}
André Oliveira
  • 1,105
  • 4
  • 20
  • 53