The problem is
ModalView *modal = [[Modal alloc] init].
This creates a new instance of your modal view, not the one you get on screen with a button click. You should implement prepareForSegue, and set your delegate there. ModalView will be the segue.destinationViewController.
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
ModalView *modal = segue.destinationViewController;
modal.delegate = self;
}
This code goes in your first controller.