Примеры контроллеров представления контейнера [закрыто]

94

Может ли кто-нибудь указать мне на какие-либо хорошие примеры создания настраиваемого контроллера представления в качестве контроллера представления контейнера? Единственная документация, которую я могу найти, - это пара абзацев в справочнике классов UIViewController . Я чувствую, что мне нужно немного больше информации, и пример реализации был бы неплохим. Google вообще ничего не обнаружил.

Меня особенно интересует метод:

transitionFromViewController:toViewController:duration:options:animations:completion:
Не отвлечение
источник
Вы нашли другие источники для этого, кроме упомянутого гиперкрипта?
Джон Эстропиа
1
Еще нет. Я собираюсь покопаться позже сегодня, если у меня будет время. Кажется странным, что о нем было бы так мало информации, учитывая, насколько оно важно и полезно. Интересно, есть ли в нем ошибки и будет ли лучше документировано, когда оно улучшится.
Undistraction
3
Это меня очень сбивает с толку. Например, в представлении может быть только один встроенный контроллер. Как насчет того, чтобы переключить контроллер на это представление контейнера?
user4951
@JanakNirmal Весьма признателен.
Undistraction
могу ли я скрыть вид контейнера
Маулик шах

Ответы:

51

Лучшее, что я нашел до сих пор, - это сеанс 102 сеанса WWDC 2011 - Реализация ограничения UIViewController .

гиперкрипт
источник
1
То же. Это не мой любимый пример демонстрационного кода, но он правильно реализует контейнеры VC, а также управление памятью - действительно важно, чтобы ваши дочерние контроллеры представления были освобождены, когда они больше не видны.
memmons
1
К сожалению, демонстрация того, как использовать ContainerViewController, не сработала, потому что на его iPad не была настроена электронная почта :-(
Кен М. Хаггерти,
Есть ли в этом сеансе образец кода?
user4951
У вас есть пример кода, он мне нужен, потому что я много пробовал, но еще не нашел растворенного вещества.
iPhone программно,
37

В дополнение к сеансу WWDC Session Video Session 102 - Реализация UIViewController Containment, о которой уже упоминалось о гиперкрипте, сеанс Apple WWDC 2012 «Эволюция контроллеров представления в iOS» также охватывает эту тему, а пример кода является частью пакета примеров кода:

https://developer.apple.com/devcenter/download.action?path=/wwdc_2012/wwdc_2012_sample_code/wwdc_2012_session_code.dmg

Здесь также есть пример: https://github.com/toolmanGitHub/stackedViewControllers

JosephH
источник
2
+1 упоминание, где взять этот проклятый пакет кода. Я просматривал это.
user4951
6
+1 еще раз, почему o почему Apple не может разместить код сеансов WWDC на своих членских страницах?
axello
+1, не могли бы вы поделиться, как получить этот путь к исходному коду?
Джанак Нирмал
1
@JanakNirmal, какой исходный код у вас возникают проблемы с получением? Чтобы получить код WWDC, просто перейдите по ссылке dmg и войдите со своим идентификатором разработчика Apple.
JosephH
17
- (void)viewDidLoad{
    [super viewDidLoad];

    // I put self in a Navigation VC so we can use its right navigationbar 
    // item for triggering the transition
    self.navigationItem.rightBarButtonItem = 
     [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit 
                                                    target:self 
                                                    action:@selector(button:)] 
                                                                  autorelease];

    // create test1 and test2 instance (subclass UIViewController and 
    // also need to define their own nibs)
    vc1 = [[test1 alloc]initWithNibName:@"test1" bundle:nil];
    vc2 = [[test2 alloc]initWithNibName:@"test2" bundle:nil];

    //add to the container vc which is self    
    [self addChildViewController:vc1];
    [self addChildViewController:vc2];

    //the entry view (will be removed from it superview later by the api)
    [self.view addSubview:vc1.view];
}

этот IBAction запускает переход между двумя VC:

-(IBAction)button:(id)sender {
    [self transitionFromViewController:vc1 
                      toViewController:vc2 
                              duration:0.5    
                               options:UIViewAnimationOptionTransitionCurlDown 
                            animations:nil 
                            completion:nil];
}
Sonnywang
источник
1
Это отличный пример. Но управление памятью в этом случае можно улучшить: stackoverflow.com/a/8453677/849616 для более подходящего решения.
Vive
1
Не то чтобы ты ошибался. Но [self addChildViewController: vc1]; не имеет смысла. Контейнер VC может иметь НЕСКОЛЬКО Контроллеров представления контейнера.
user4951
@Vive В моем проекте я достиг точки, когда меня беспокоит управление памятью. Не могли бы вы сказать мне, какая конкретно ссылка, которую вы разместили, лучше с точки зрения управления памятью? Я совсем новичок и с трудом вижу расхождения
jacobronniegeorge
10

Может ли это:

http://subjective-objective-c.blogspot.com/2011/08/writing-high-quality-view-controller.html

Достаточно для ваших нужд?

Руи Перес
источник
4
На самом деле я это уже нашел, но, к сожалению, это написано об Ios4, но 5 внесла существенные изменения. Apple теперь явно поддерживает создание настраиваемых контейнеров контроллера представления, хотя, похоже, они не хотят помогать нам разобраться, как их использовать. Спасибо хоть.
Undistraction
Вы можете показать мне, где это говорят. Не сомневаюсь в тебе, просто любопытно, потому что я тоже боролся с этим.
Руи Перес
4
Не беспокойся. Я просмотрел код его контейнерных классов, и ни один из них не использовал ни один из следующих методов: addChildViewController :, removeFromParentViewController, transitionFromViewController: toViewController: duration: options: animations: Завершение :, willMoveToParentViewController: и didMoveToParentViewController: Все они упомянуты в обновленном Документация ios5 для UIViewController.
Undistraction
8

не знаю, является ли это «хорошим» примером, но вы можете получить бесплатный контейнер ViewController по адресу https://bitbucket.org/javieralonso/jaacordeonviewcontroller/overview

Контроллер представления контейнера полной метафоры аккордеона

Javieralog
источник
Хорошая находка. Это выглядит полезным.
Undistraction
3

Это мои любимые (готовые к iOS7) учебники / примеры по этой теме (исходный код всех трех доступен на github):

Просмотр содержания контроллера

Пользовательские переходы контроллера представления контейнера

Переходы контроллера интерактивного настраиваемого представления контейнера

И затем, конечно, Apple предлагает целую рецензию на эту тему, которую я считаю бесценной:

Создание настраиваемых контроллеров представления контейнера

радиовизуальный
источник