В чем разница между 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??


person Ian    schedule 25.06.2012    source источник


Ответы (2)


Это четыре совершенно разные реализации

  • addChildViewController используется в iOS5 для сдерживания viewController, это позволит вам легко создать свой собственный NavigationCotrollers или TabControllers, доступный только в iOS5.

  • addSubview - это самый низкий уровень из трех, это просто добавит представление к другому представлению, как дочернее

  • presentModalViewController используется для модального представления viewController на экране, следовательно, перезаписывая старый

  • pushViewController используется в UINavigationController для добавления нового ViewController в стек ViewControllers,

person Omar Abdelhafith    schedule 25.06.2012

1) был представлен в iOS 5 как часть смены парадигмы Apple, чтобы разрешить иерархию контроллеров представления, он просто помещает контроллер представления перед текущим. Вы должны управлять потоком контроллеров.

2) То же, что и one, за исключением того, что это можно сделать только для одного контроллера представления за раз. На самом деле, этот метод был заменен [self presentViewController:animated:completion:]

3) Добавляет контроллер представления в список, чтобы вы могли вернуться к предыдущему после нажатия «назад». iOS будет управлять потоком контроллеров для вас.

person borrrden    schedule 25.06.2012