2011-02-03 141 views
2

我有一個UITabbarController與UINavigationController。 NavigationController中的視圖呈現一個MVC(AddClockNavigationController)。這個MVC有一個帶有視圖的筆尖和一個UINavigationController。 NavigationController.view作爲子視圖添加到MVC的視圖中。dismissModalViewControllerAnimated不工作

我的MVC中的NavigationController有兩個按鈕,一個是Cancel和一個Done。當按其中任何一個時,MVC應該被解僱。 這些按鈕的IBActions在UINavigationController視圖(AddClockViewController)中,但每當按下它們時,MVC都不會消失。 如果我將這些動作放入MVC中,它確實會消失。 如果我把函數放在我的MVC中,並使用[self.parentViewController myFunction]從我的viewController調用它,它並不會消失。

我怎樣才能讓它從我的視野中消失?

我想我的ex is很亂,但我希望你能理解。
從我的IB一個觀點: enter image description here

最好的問候,
保羅Peelen

編輯 我與[self dismissModalViewControllerAnimated:YES];試過,[self.parentViewController dismissModalViewControllerAnimated:YES];[self.navigationController dismissModalViewControllerAnimated:YES];[self.parentViewController.navigationController dismissModalViewControllerAnimated:YES];和,如前所述,用在父視圖中解除它的功能。什麼都沒有

回答

7

當某個視圖控制器呈現另一個視圖控制器時,它將成爲父視圖控制器。所以,如果您想放棄你的模態視圖控制器,那麼你必須選擇:

  1. 從父視圖控制器調用

    [自dismissModalViewControllerAnimated:YES];

OR

  1. 從模態視圖控制器呼叫

    [self.parentViewController dismissModalViewControllerAnimated:YES];

實際上您並不需要導航控制器(因爲您不需要按下/彈出任何視圖控制器)。只需將UINavigationBar添加到您的MVC並在其上放置按鈕即可。然後添加行動給他們,並做選擇#2。 您的代碼無法使用,因爲導航控制器沒有父項,因爲它沒有顯示爲模式。

+0

嗨,我試過......但它不會工作。此外,第二個NavigationController的原因是因爲視圖加載(一個UIViewController)扣留UITableView與單元格推到下一個視圖。這不適用於「公正」和NavigationBar。 – 2011-02-03 07:57:01

4

一種情況是在調用viewController的viewDidAppear之前調用dismiss {Modal} ViewControllerAnimated。在這種情況下,呈現的是動畫== YES。在呈現完全出現之前,它被解僱了。

爲了解決這個問題,你需要檢查在時間解僱了點,檢查是否viewDidAppear被稱爲如果不是,推遲解聘的 - viewDidAppear。