UINavigationController меняет дочернее представление с другим - PullRequest
0 голосов
/ 29 июля 2010

У меня есть следующая структура в Navigation Controller

RootViewController
         |
         |--FirstViewController
         |
         |--SecondViewController

Как я могу прыгнуть прямо с FirstViewController на SecondViewController, не показывая RootViewController. Я хотел бы поместить кнопку на панель навигации FirstViewController, например, «Перейти к SecondViewController».

1 Ответ

1 голос
/ 29 июля 2010

В соответствующем методе действия кнопки инициализируйте SecondViewController, затем соберите NSArray, состоящий из двух элементов: RootViewController и только что инициализированного SecondViewController (в этом порядке, то есть Root с индексами 0 и Second по индексу 1).

Затем вызовите метод NavigationController setViewControllers:animated: и передайте массив контроллеров представления в качестве первого аргумента. Не забудьте release SecondViewController после вызова этого метода или autorelease при инициализации, чтобы избежать утечки памяти.

Просто чтобы уточнить, это приведет к тому, что NavigationController освободит FirstViewController.

Пример:

- (void) goToSecondViewController
{
    RootViewController *root = [[self.navigationController viewControllers] objectAtIndex:0];
    SecondViewController *second = [[[SecondViewController alloc] init] autorelease];
    NSArray *controllersArray = [NSArray arrayWithObjects: root, second, nil];

    [self.navigationController setViewControllers:controllersArray animated:YES];
}

Ссылка: Ссылка на класс UINavigationController

...