モーダルセグエを実行する場合、セグエの実行後に元の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");
}
}