У меня есть пара модальных представлений, которые работают «отлично» и теперь перестали возвращаться к контроллеру родительского представления, и «код не изменился». - классическое описание проблемы.iPad: представление модального вида, а мой parentViewController теперь равен нулю?
Я отлаживал отклонение модального вида и контроллер родительского представления равен нулю, что объясняет проблему, но не причину. Я обновил свой SDK с 4.1.2 до 4.2, поэтому я могу начать работать с iOS 5. Я подозреваю, что ARC нового управления памятью и мой стиль autorelease по сравнению с сохранением/выпуском.
Ниже приводится код из моего rootview контроллера в AboutViewController:
- (IBAction)doInfo:(id)sender {
NSLog(@"%s", __FUNCTION__);
AboutViewController *aboutViewController = [[[AboutViewController alloc] initWithNibName:@"AboutViewController" bundle:[NSBundle mainBundle]] autorelease];
if (aboutViewController) {
aboutViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
aboutViewController.hidesBottomBarWhenPushed = YES;
self.navigationController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
self.navigationController.navigationBarHidden = YES;
[self presentModalViewController:aboutViewController animated:YES];
}
}
Ниже приводится смещать в AboutViewController обратно к родителю после нажатия на кнопку «Готово».
- (IBAction)doDone:(id)sender {
NSLog(@"%s", __FUNCTION__);
[[self parentViewController] dismissModalViewControllerAnimated:YES];
}
ОК ... исправлено, изменив следующее. Теперь вопрос в том, почему это раньше?
- (IBAction)doDone:(id)sender {
NSLog(@"%s", __FUNCTION__);
[self dismissModalViewControllerAnimated:YES];
}
FYI - Я проверил перестановки целей 4.1, 4.2., 4.3 и 5.0 с моим кодом на iPad с iOS4 (кроме целевого 5.0), iPad с iOS5 и Simulator 5.0. Он подтверждает то, что вы нашли в документах. Код iOS 4 падает с представлениемViewController как «не найден». – mobibob