2012-10-16 19 views
0

讓我解釋一下。我有多個UIViewControllers。在我的MainPageController上,我有3個UIViews。讓我們以這種方式列舉它:第一個UIView被稱爲LoginView,第二個被稱爲HomeView,另一個被稱爲RegView。現在在HomeView中,有多個按鈕會導致其他UIViewControllers。例如,一個按鈕將導致StoreController。現在,如果我是裏面StoreController,我想回去MainPageController,我只需撥打:當dismissModalViewControllerAnimated顯示正確的UIView:完成:被調用

[self dismissModalViewControllerAnimated:YES completion:nil]

這會送我回HomeView

這很好。然而,在StoreController裏面,有些按鈕可以讓我指向LoginViewRegView,無論哪個按鈕被點擊。問題是當方法[self dismissModalViewControllerAnimated:YES completion:nil]時,它只會將我帶回HomeView,無論我按下哪個按鈕。

那麼一旦dismissModalViewControllerAnimated被調用,我將如何顯示正確的UIView?

編輯:

這是我如何展示UIViews:

-(void)viewDidLoad 
{ 
    //Initialize the views here... 
} 

-(void)showViewByTag:(NSInteger)tag 
{ 
    if (tag == 1) 
    { 
    [self.view addSubview:loginView]; 
    } 
    else if (tag == 2) 
    { 
    [self.view addSubview:homeView]; 
    } 
    else 
    { 
    [self.view addSubview:regView]; 
    } 
} 

現在我調用該方法showViewByTag:的地方在我的代碼顯示的看法。

+0

MainPageController如何處理3個視圖?他們是否重疊共同觀點的子視圖?你如何管理這些? – sergio

+0

我創建了一個函數,它將根據「viewTag」顯示UIViews。例如,如果viewTag == 1,它將顯示LoginView。如果viewTag == 2,它將顯示HomeView。我會在上面展示它。 –

回答

1

你可以嘗試什麼,做的是以下幾點:調用[self dismissModalViewControllerAnimated:YES completion:nil](從而返回到你家視圖)之前,改變目前在視圖中顯示您的MainPageController

[(MainPageController*)self.presentingViewController showViewByTag:desiredViewTag]; 
[self dismissModalViewControllerAnimated:YES...]; 

如果你在劇組擔心,你預料到self.presentingViewController可能不MainPageController類型在某些情況下,你可以明確地檢查它的類型:

if ([self.presentingViewController isKindOf:[MainPageController class]]) 
    [(MainPageController*)self.presentingViewController showViewByTag:desiredViewTag]; 
[self dismissModalViewControllerAnimated:YES...]; 

對於這個編譯,MainPageController。 h必須在您的模態控制器類中導入。

+0

好吧,我會先嚐試它。謝謝回答! –

+0

似乎'self.presentingViewController'不調用MainPageController的方法(即使MainPageController是StoreController的presentsViewController)。 –

+0

你是什麼意思:不打電話?你有沒有崩潰?或者是self.presentingViewController nil? – sergio

0

dismissModalViewController總會帶回其中提出它的viewController,那隻能是一個,所以理想的辦法是告訴navigationController到initWith所需的viewController ..

如對regButton點擊提交modalview

RegViewController *regViewController = [[RegViewController alloc]initWithNibNam:@"RegViewController" bundle:nil]; 

[self.navigationController initWithRootViewController:regViewController]; 
+0

嗨,謝謝你的回答。讓我澄清一下。 'RegView'(以及'LoginView'和'HomeView')是'MainPageController'中的UIViews。我想要的是在其他UIViewControllers上調用'dismissModalViewControllerAnimated'時顯示正確的視圖。 –

+0

檢查更新的代碼後,似乎dismissModalViewController不是要走的路,因爲視圖添加到MainPageController,請嘗試從超級視圖中刪除它們。 – AppleDelegate

+0

[self.navigationController popToRootViewControllerAnimated:YES];應該帶你到MainPageController – AppleDelegate

相關問題