2012-01-19 35 views
2

我試圖在UIViewController呼叫另一個後很快關閉。這應該很簡單,但我沒有成功。我使用下面的方法:關閉UIViewController

- (IBAction)bClose:(id)sender { 

    iTest *test = [[iTest alloc] initWithNibName:@"iTest" bundle:[NSBundle mainBundle]]; 
    test.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
    [self presentModalViewController:test animated:YES]; 
    [test release]; 

    [self dismissModalViewControllerAnimated:YES]; 
} 
+0

你究竟想要做什麼? – Costique

+0

由於您試圖關閉仍然打開子控制器的控制器,因此無法正常工作。您應該回到繪圖板並找到正確的導航方式。 – Till

回答

1

我相信它不是簡單的。我做了類似的事情,但是我在第一個中提出第二個,然後在第二個想要解散(同時解僱兩個)的時候解僱第一個。爲了解釋我的意思更好:

  1. 主 - >本控制器1
  2. 控制器1 - >目前控制器2
  3. 控制器2 - >關閉控制器1

我敢肯定有一個更好的解決方案它雖然。

事情是這樣的:

內第一個控制器:

UIViewController *c1 = [[UIViewController alloc] init]; 
[self presentModalViewController: c1 animated:YES]; 

裏面C1:

UIViewController *c2 = [[UIViewController alloc] init]; 
c2.c1 = self; 
[self presentModalViewController: c2 animated:YES]; 

裏面C2:

[c1 dismissModalViewControllerAnimated:YES]; 
+0

你會有一段代碼? – user941059

+0

編輯添加一些代碼。我不能告訴你這是否有效,但我想我做了這樣的事情。不要再有代碼了。 – vakio

0

我也有嘗試類似的東西..但跑了我n要大致相同的問題..

我的解決辦法是啓動與時間0.5秒的計時器,然後關閉該視圖中選擇

適合我。

+0

[self performSelector:@selector(close)withObject:nil afterDelay:0.5]; - (void)close {[self dismissModalViewControllerAnimated:YES];} - 它仍然失敗,我做錯了什麼? – user941059

+0

通過close方法中的斷點檢查來確認dismissModalview正在被調用。如果是。然後將延遲更改爲更高的值。在某種程度上,這種看法將被駁回。這一切都取決於第二個視圖花費多少時間來啓動自己 – Shubhank

+0

我認爲在您提交新視圖之前,您必須先解僱他,但我可能是錯的。 – vakio