В чем разница между 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 будет управлять потоком контроллеров для вас.