UIViewController在調removeFromParentViewController時遇到的問題

參考地址:http://stackoverflow.com/questions/8379759/how-does-view-controller-containment-work-in-ios-5

在用UIViewController時,遇到點問題

原寫法:

UserInformController* informController = [[UserInformController alloc] init];

[self.view addSubview:informController.view];

[self addChildViewController:informController];


移除時

[self.view removeFromSuperview];

[self removeFromParentViewController];


出錯;


google到原因:

1.從無父Controller到添加到父Controller


[vc willMoveToParentViewController:self];

[self addChildViewController:vc];

[self.view addSubview:vc.view]; // or something like this.

[vc didMoveToParentViewController:self];

2.從父Controller到移除

[vc willMoveToParentViewController:nil];

[vc.view removeFromSuperview];

[vc removeFromParentViewController];



發現問題,還另有原因,如果在子Controller中,把自己從父Controller中移除,在ios6中沒問題,在iOS7中,會崩潰

[self willMoveToParentViewController:nil];

[self.view removeFromSuperview];

[self removeFromParentViewController]; //ios7中崩潰


暫時的解決方法,在子Controller中發通知,通知父Controller,移除子Controller

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章