2011-08-19 112 views
2

我有一個導航爲基礎的應用程序中,我加入的ABPeoplePickerNavigationController作爲一個子視圖到我的導航Contorller這樣的: 我有救子視圖添加到navView前視圖。將子視圖添加到UINavigationController然後回到第一個子視圖?

ABPeoplePickerNavigationController *peoplePicker = [[ABPeoplePickerNavigationController alloc] init]; 
peoplePicker.peoplePickerDelegate = self; 

navView = [[UIView alloc] init]; 
navView = [[self.view superview] superview]; 

[[[self.view superview] superview] addSubview:[peoplePicker view]]; 

它工作正常,但是當我完成PeoplePicker並且我想返回到以前的視圖。我用這個代碼,但它不起作用。

[[[self.view superview] superview] addSubview:navView]; 

我不明白,我從子視圖中保存了導航視圖,現在我無法將它帶回來?

回答

1

您需要添加後退按鈕,就像這樣:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil]; 
self.navigationItem.backBarButtonItem = backButton; 
[backButton release]; 

理想的情況下你的NavigationController是你的應用程序的根,在這種情況下,任何其他的看法是它的一個子視圖,所以你從來沒有真實地,務必遠離您的導航控制器,您只需更改顯示的實際視圖。

而且在嘗試引用您的第一個視圖的方式是相當凌亂/混亂。你應該將其更改爲類似:

[appDelegate.navigationController topViewController];  

[appDelegate.navigationController popToRootViewController]; 

我不能告訴你一定是我不知道你的確切視圖層次的使用哪個,但我會強烈建議您嘗試優化該代碼。

我也許應該注意的是,以下的兩行導航控制器上的後退按鈕,並做不同的事情。後退按鈕可讓您返回一個視圖,而popToRoot和topView都旨在讓您回到第一個視圖控制器。

編輯:改變了後退按鈕的代碼的代碼實際上我用

EDIT2:只是因爲我有更多一點空間在這裏我可以試着去了解你的層次結構更好。它看起來像這樣?

Root View      or     Root View 
-> Group View         -> Group View 
ABPeoplePicker View        -> ABPeople Picker View 

Root View 
-> Group View 
-> -> ABPeoplePicker 

這意味着ABPeoplePicker嵌套在Group中,並且嵌套在根中?我認爲它不起作用,因爲你實際擁有的是第一行中的兩個之一,當你想要的是第二行。因爲我實際上並不知道哪一個你沒有看到它,所以我不能確切地告訴你要改變什麼,但是如果你想讓它像第二行中的heirarchy一樣嵌套,你需要推動你的組視圖到根視圖控制器(這是您的導航控制器)上,然後您想要再次將People Picker推到根視圖控制器上。在此之後,您的後退按鈕和視圖切換應按照您希望的方式進行。

+0

我NavigationController具有後退按鈕,但它進入第一個視圖(RootViewController的)。這是我如何去ABPeoplePicker觀點: RootViewController-> GroupView-> ABPeoplePickerNavigation 但後退按鈕不會去GroupView,它進入RootViewController的。 – Hadu

+0

我編輯了我的答案,試圖更好地理解你的層次結構,讓我知道如果這是正確的。我會盡力盡快回復你。 –

+0

是的,層次結構與您繪製的層次結構完全相同。除PeoplePicker未使用NavigationController進行推送外。 我試過了: '[self.navigationController popToViewController:self animated:YES];' 但GroupView沒有顯示,我想這是因爲我沒有推PeoplePicker,所以NavigationController無法彈出另一個視圖背部。我將其替換爲子視圖。我怎樣才能將它改回GroupView? – Hadu

相關問題