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


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.