当执行模式的segue时,在执行segue之后,原始ViewController是否被丢弃?我将目标控制器的委托设置为源ViewController,但是当目标ViewController.viewDidLoad,self.delegate为零时...iOS Modal Segue丢弃源ViewController?
以下代码将生成日志消息“ListViewController.viewDidLoad:我的委托为零:(”
[来源]的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");
}
}
是否'MapViewController.prepareForSegue:Segue公司mapToList ...'显示在控制台? – Dion 2012-04-10 19:37:04
是的,对不起,觉得那样会很明显。经过一些测试,特别是更改为push segue,似乎原来的ViewController确实被解雇/清除...... – wuntee 2012-04-10 20:07:44
我刚做了一个新的应用程序,它工作正常。 [在github上查看](https://github.com/mikezehrer/ModalDelegation)。 – 2012-04-10 20:54:04