В чем разница между addChildViewController и presentModelViewController
Я знаю, что есть три способа изменить представление в iOS
1.
[self addChildViewController:thirdViewController];
[contentView addSubview:thirdViewController.view];
2.
First * sVC = [[First alloc] initWithNibName:@"First" bundle:[NSBundle mainBundle]];
[self presentModalViewController:sVC animated:YES];
3.
MyViewController *sampleViewController = [[[MyViewController alloc]initWithXXX] autorelease];
[self.navigationController pushViewController: sampleViewController animated:true];
pushViewController требует контроллера навигации, который я понимаю. Однако когда использовать addChildViewController и presentModalViewController??
Ответы
Ответ 1
Это четыре совершенно разные реализации
-
addChildViewController
используется в iOS5 для создания сдерживания viewController, это позволит вам легко создать свой собственный NavigationCotrollers
или TabControllers
его единственный доступный в iOS5
-
addSubview
- это самый низкий уровень из трех, это просто добавит представление в другое представление, как дочерний
-
presentModalViewController
используется для визуального представления viewController на экране, поэтому перезаписываем старый
-
pushViewController
, используемый в UINavigationController
, чтобы нажать новый ViewController в стеке viewcontrollers,
Ответ 2
1) был введен в iOS 5 как часть сдвига парадигмы Apple, чтобы позволить иерархии диспетчера представлений, он просто ставит контроллер представления перед текущим. Вы должны управлять потоком контроллеров.
2) То же, что и один, за исключением того, что он может выполняться только для одного контроллера представления одновременно. На самом деле этот метод был заменен на [self presentViewController:animated:completion:]
3) Добавляет контроллер вида в список, чтобы вы могли вернуться к предыдущему после нажатия "назад". iOS будет управлять потоком контроллеров для вас.