2011-05-04 107 views
2

我正在試圖使用iPad應用程序中的分割視圖控制器。從模態視圖控制器推UIViewController

現在,我有一個觀點被顯示在使用模態視圖控制器:

[self presentModalViewController:viewController animated:YES]; 

和工作正常,但是當用戶按下一個按鈕,我想根視圖控制器推到另一個視圖。我正在使用:

RootViewController *rvc = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil]; 
[rcv pushViewController:rvc animated:YES]; 

但這是行不通的。我該怎麼辦?

--edit

現在,我使用

PhotosViewController *pv = [[PhotosViewController alloc] initWithNibName:@"PhotosViewController" bundle:nil]; 
[self.parentViewController.navigationController pushViewController:pv animated:YES]; 
NSLog(@"Navigation Controller: %@", self.parentViewController.naviagtionController); 

當我這樣做的NSLog調用,它返回零。這是爲什麼?

再次,我正在使用拆分視圖控制器,並試圖將RootViewController推到新的視圖。

感謝

回答

6

您的代碼不工作,因爲你創造了一個RootViewController實例,然後試圖將其推到自身。你應該做的是推新視圖控制器到父視圖控制器的導航控制器:

[self.parentViewController.navigationController pushViewController:newViewController animated:YES]; 
+0

這不工作,我更新了帖子,以顯示我的新問題。 – tallen11 2011-05-05 19:32:10

+0

沒關係,我得到它的工作,謝謝! – tallen11 2011-05-09 23:06:31

3

我知道這是一個老問題,但我相信有道「現在」推的viewController到主導航從模態viewController堆棧是在模態上創建一個「didTapShowBlahViewController」委託(假設你想用戶完成現有模態視圖,然後將新視圖推入堆棧)。一旦你有了這個委託,你只需擁有最初調用該模式的視圖來執行解除模式並在代理被觸發時推送下一個視圖控制器。

- (void)didTapShowBlahViewController{ 
    [self dismissViewControllerAnimated:YES completion: nil]; 
    [self performSegueWithIdentifier:@"segueToBlahViewController" sender:self]; 
} 

這是基於Apple's View Controller Programming Guide指定將數據傳遞到子視圖控制器和使用委託將數據傳回給家長。參考:這種方式還可以確保「返回」按鈕不會返回到模態,而是返回到調用模態的視圖,這就是典型的模態使用方式。