2010-07-30 95 views
0

我有3個基於視圖的應用程序。爲了從不同的視圖導航,我使用委託方法,例如在第二個視圖中,我有一個委託,它是對第一個視圖的引用,當我想從第二個視圖傳遞到第一個視圖時,我調用代表,這很簡單:[self dismissModalViewControllerAnimated:YES];。 現在的問題是,我需要做這件事:iPhone視圖導航問題

1 ---> 2 ---> 3 ---> 1。所以我想回到第三個觀點。使用dismissModalViewControllerAnimated,我可以看到我剛過第二個視圖,然後到達第一個視圖。如果可能的話,我想避免這件事。我發現使用[self.navigationController popToRootViewControllerAnimated:NO];的可能性,我試圖用它來代替dismissModalViewControllerAnimated,但程序做了任何事情。

更新
問題解決了,每一個問題是由的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的項目導航。它可以幫助你。完成後。要實現你的視圖體系結構,這裏是你如何做到的。

在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

不要發佈多個答案。相反,編輯您的原始答案以添加更多詳細信息。 – 2010-07-30 18:31:38

+0

對不起。我會在下次做;-) – Niko 2010-07-30 19:02:54