モーダルセグエを実行する場合、セグエの実行後に元のViewControllerは破棄されますか?宛先コントローラーのデリゲートをソースViewControllerに設定していますが、宛先ViewController.viewDidLoadの場合、self.delegateはnilです...
次のコードは、ログメッセージ「ListViewController.viewDidLoad:私のデリゲートはnilです:(」を生成します。
[ソース]MapViewController:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if([segue.identifier isEqualToString:@"mapToList"]){
        NSLog(@"MapViewController.prepareForSegue: Segue mapToList being called, setting LisViewController's delegate to myself");
        [segue.destinationViewController setDelegate:self];
        if(!self){
            NSLog(@"MapViewController.prepareForSegue: I am nil.");
        } else {
            NSLog(@"MapViewController.prepareForSegue: I am NOT nil.");
        }
    }
}
[宛先]ListViewController:
- (void)viewDidLoad
{
    [super viewDidLoad];
    if(!self.delegate){
        NSLog(@"ListViewController.viewDidLoad: My delegate is nil :(");
    } else {
        NSLog(@"ListViewController.viewDidLoad: My delegate populated");
    }
}