2013-05-18 56 views
0

訪問detailViewController我試圖得到一個參考我的detailViewController應用didFinishLaunchingWithOptions:方法。但在這裏我面臨着一個問題。無法從UINavigationController的

我有下一個瀏覽結構故事板(對於ipad公司):

UISplitViewController - >的UINavigationController - >的UITableViewController - >detailViewController

我創建賽格瑞與 「」 風格UITableViewControllerCell和detailViewController之間

截圖:http://picturepush.com/public/13071076

我試圖得到一個參考detailViewController這樣:

UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController; 

    UINavigationController *navigationController = [splitViewController.viewControllers lastObject]; 
    DetailViewController *detailViewController = [navigationController.viewControllers lastObject]; 

但結果我提到我的UITableViewController,而不是接受 DetailViewControllernavigationController.viewControllers計數是1,但應該有2(我認爲是)。

我希望能爲您提供幫助。

+0

當我與相同的故事板的結構適用於iPhone我可以得到下面的代碼參考:self.detailViewController =(ADDetailViewController *)[[self.splitViewController.viewControllers lastObject] topViewController];但爲什麼它不適用於iPad? – tr1mer

+0

你在哪個文件中調用上面的代碼? –

+0

我從TableViewController調用它。 – tr1mer

回答

0

由於您使用樣式創建了一個segue,因此只有在點擊表格視圖單元格後,纔會加載detailViewController。它不會在應用程序didFinishLaunchingWithOptions方法中加載。

我建議你嘗試使detailViewController作爲你的表視圖控制器中的一個屬性。

@property (nonatomic, strong) UIViewController *detailViewController; 

然後在您的應用程序didFinishLaunchingWithOptions方法,您可以訪問屬性:

UITableViewController *tableViewController = [navigationController.viewControllers lastObject]; 
DetailViewController *detailViewController = tableViewController.detailViewController; 

但你需要避免使用執行賽格瑞功能,推動每當它需要與通常的詳細視圖控制器pushViewController方法。

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

是的,在我的項目中,我使用detailViewController作爲屬性。 – tr1mer

相關問題