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


94

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

Мене особливо цікавить метод:

transitionFromViewController:toViewController:duration:options:animations:completion:

Ви знайшли для цього інші джерела, крім згаданого гіперкрипту?
— Джон Естропія,

1
Ще ні. Пізніше сьогодні я зроблю ще одну розкопку, якщо встигну. Виглядає дивним, що інформації про це було б так мало, зважаючи на те, наскільки це важливо і корисно. Цікаво, чи це помилка, і чи буде вона краще задокументована, коли її покращать.
— Невідволікання уваги

3
Це мене надзвичайно бентежить. Наприклад, подання може мати лише один вбудований контролер. Як щодо того, якщо ви хочете перемкнути контролер у цьому поданні контейнера?
— user4951

@JanakNirmal Щиро вдячний.
— Невідволікання уваги

Чи можу я приховати вигляд контейнера
— Maulik shah

Відповіді:


51

Найкраще, що я знайшов на сьогоднішній день, - це відеосесія 102 сесії WWDC 2011 - Впровадження обмеження UIViewController .


1
Так само. Це не мій улюблений приклад демонстраційного коду, але він належним чином реалізує контейнери VC, а також управління пам’яттю - дуже важливо, щоб ваші дочірні контролери перегляду випускалися, коли їх більше не видно.
— memmons

1
На жаль, демонстрація використання ContainerViewController не спрацювала, оскільки у нього не було налаштовано електронну пошту на своєму iPad :-(
— Кен М. Хаггерті,

Чи має цей сеанс зразок коду?
— user4951

у вас є зразок коду зараз, він мені потрібен, тому що я багато пробував, але поки що не маю рішення.
— iPhone програмно

37

На додаток до відео- сесії WWDC Session 102 - Впровадження обмеження UIViewController, про яке вже згадувалось гіпершифрування, сесія 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


2
+1 з згадуванням, де взяти цей проклятий пакет кодів. Я переглядав це.
— user4951

6
Знову +1, чому o, чому Apple не може розмістити код сеансів WWDC на своїх сторінках учасників?
— axello

+1, не могли б ви поділитися, як отримати цей шлях до вихідного коду?
— Janak Nirmal

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 ініціює перехід між двома ВК:

-(IBAction)button:(id)sender {
    [self transitionFromViewController:vc1 
                      toViewController:vc2 
                              duration:0.5    
                               options:UIViewAnimationOptionTransitionCurlDown 
                            animations:nil 
                            completion:nil];
}

1
Це чудовий приклад. Але управління пам’яттю в цьому випадку можна вдосконалити: stackoverflow.com/a/8453677/849616 для більш підходящого рішення.
— Vive

1
Не те щоб ти помилявся. Але [self addChildViewController: vc1]; не має сенсу. Контейнер VC може мати НЕКОЛЬКО контролерів перегляду контейнерів.
— user4951

@Vive У своєму проекті я досяг точки, коли мене турбує управління пам'яттю. Не могли б ви сказати мені, що саме посилання, яке ви розмістили, робить краще з точки зору управління пам'яттю? Я зовсім новачок і важко
— переживаю


10

Може це:

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

Вистачить для ваших потреб?


4
Насправді я це вже знайшов, але, на жаль, це написано про Ios4, але 5 вніс суттєві зміни. Зараз Apple явно підтримує створення спеціальних контейнерів View Controller, хоча вони, схоже, не хочуть допомагати нам з’ясовувати, як ними користуватися. Хоча дякую.
— Невідволікання уваги

Чи можете ви показати мені, де вони так говорять. Не сумніваючись у вас, просто цікаво, бо я теж боровся з цим.
— Rui Peres

4
Не хвилюйтесь. Я переглянув код для його класів контейнерів, і жоден з них не використовує жодного з наступних методів: addChildViewController :, removeFromParentViewController, prelazFromViewController: toViewController: duration: options: animations: завершення :, willMoveToParentViewController: and didMontVoverVoiController: ios5 Документація для UIViewController.
— Невідволікання уваги


3

Це мої улюблені (готові до iOS7) підручники / приклади з цього питання (усі три мають вихідний код, доступний на github):

Перегляд обмеження контролера

Спеціальні переходи контролера подання контейнера

Інтерактивні переходи контролера перегляду спеціального контейнера

І тоді, звичайно, Apple пропонує цілу інформацію про те, що я вважаю безцінним:

Створення користувацьких контролерів подання контейнерів

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.