2010-07-30 4 views
0

У меня есть 3 приложения на основе. Чтобы перемещаться из разных представлений, я использую метод делегата, например, во втором представлении у меня есть делегат, который является ссылкой на первое представление, и когда я хочу перейти от второго к первому виду, я вызываю метод делегат, который сделал простой: [self dismissModalViewControllerAnimated:YES];. Теперь проблема в том, что мне нужно сделать следующее:iPhone вид навигации проблема

1 ---> 2 ---> 3 ---> 1. Поэтому я хочу вернуться к первому виду из третьего. Используя функцию cancelModalViewControllerAnimated, я могу видеть только момент, когда я прохожу через второе представление, а затем я достигаю первого. Если это возможно, я хочу избежать этой вещи. Я нашел что-то о возможности использовать [self.navigationController popToRootViewControllerAnimated:NO];, я попытался использовать его вместо rejectModalViewControllerAnimated, но программа что-то сделала.

Update
Проблема решена, каждая проблема была вызвана неправильной инициализации UINavigationController. Я найти решение, чтобы инициализировать его правильно в моем файле AppDelegate:

UINavigationController* controller=[[UINavigationController alloc] initWithRootViewController:viewController]; 
    controller.navigationBarHidden=TRUE; 
    [window addSubview:controller.view]; 
    [window makeKeyAndVisible]; 

Теперь все работает отлично, единственное, что оставляет меня в недоумении, что я не могу выпустить свой controller экземпляр иначе вид не Diplay. Спасибо всем !!!

ответ

0

Для работы функции [self.navigationController popToRootViewControllerAnimated:NO]; вам необходимо добавить код UINavigationController. Вы делали это?

0

Если вы хотите, у вас есть возможность создать проект Xcode Navigation-based. Это может помочь вам. Когда-то сделали. Чтобы реализовать свою архитектуру просмотров, вот как вы можете это сделать.

В View1Controller.m

- (IBAction)goToView2 
{ 
    View2Controller *view2 = [[View2Controller alloc] init]; 
    [self.navigationController pushViewController:view2 animated:YES]; 
    [view2 release]; 
} 

В View2Controller.m

- (IBAction)goToView3 
{ 
    View3Controller *view3 = [[View3Controller alloc] init]; 
    [self.navigationController pushViewController:view3 animated:YES]; 
    [view3 release]; 
} 

В View3Controller.m

- (IBAction)goToView1 
{ 
    [self.navigationController popToRootViewControllerAnimated:YES]; 
} 

Обратите внимание, что, UINavigationController автоматически создает кнопку назад, когда вызывающую pushViewController , У вас есть возможность скрыть его, добавив:

self.navigationItem.hidesBackButton = YES; 

в контроллере представления, вызываемой pushViewController.

Если у вас все еще есть проблемы с внедрением NavigationController, не стесняйтесь спрашивать. ;-)

+0

Не отправляйте несколько ответов. Вместо этого отредактируйте исходный ответ, чтобы добавить более подробную информацию. –

+0

Извините. Я сделаю это в следующий раз ;-) – Niko

Смежные вопросы