Как связать модальные представления из контроллера, запущенного из UITabBarController - PullRequest
0 голосов
/ 18 марта 2011

Как бы мне было объединить несколько модальных контроллеров с точки зрения UITabBarController? В Руководстве по программированию View от Apple говорится, что это выполнимо, но когда я пытаюсь выполнить такую ​​задачу, я получаю сообщение об ошибке,

"*Assertion failure in -[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:], /SourceCache/UIKit_Sim/UIKit-1447.6.4/UIWindowController.m:186

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

UITabBarController -> 1 дочерний элемент - наследуемый класс UIViewController с именем Tab1Controller.

Tab1Controller -> управляет каждым из 2 контроллеров, которые должны быть представлены модально. Запускает 1 модальный UIViewController и, когда он завершается (вызывается с помощью обратного вызова), закрывает его и затем запускает другой модальный UIViewController.

Как будто не хватает времени между двумя модальными контроллерами, заканчивающимися и запускающимися.

Есть ли какой-нибудь пример кода, который показывает, как можно создать один модальный контроллер за другим?

Ответы [ 3 ]

0 голосов
/ 18 марта 2011
0 голосов
/ 29 октября 2012
// present modal view inside another presented modal view

    FirstViewController *firstVC = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController: firstVC];

    // Note: you can use your viewcontroller instead self.window.rootViewController

    [self.window.rootViewController presentViewController:navController animated:YES completion:^{
                //code...
                    SecondViewController *secondVC = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

                    [navController presentViewController: secondVC animated:YES completion:nil];

                }
            }];
0 голосов
/ 18 марта 2011

Как будто не хватает времени между двумя модальными контроллерами, заканчивающимися и начинающими.

Я думаю, что вы попали туда по голове.Вы не можете представить новый контроллер модального представления, пока предыдущий не закончил исчезать, и метод viewDidAppear: вызывается на контроллере представления, который был покрыт старым модальным представлением.

Другой вариант - представитьвторой модальный вид поверх первого, например

[firstModalViewController presentModalViewController:secondModalViewController animated:YES]

Затем вы можете позвонить [firstModalViewController dismissModalViewControllerAnimated:YES], чтобы отклонить второе (возвращение к первому), или [self dismissModalViewControllerAnimated:YES], чтобы отклонить оба сразу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...