2011-02-26 75 views
0

我已經創建了自己的ProfileUIViewController類,它是一個UINavigationControllerDelegate。我顯示在兩種方式這樣的觀點:定製UIModalViewController尺寸並具有導航欄

  1. 從IBAction爲內A-UIViewController.m,作爲UIModalViewController。當它加載時,A-UIViewController有一個UINavigationBar,但是當我顯示模式時,它不再具有導航欄。

  2. 從點擊內B-UIViewController.m表格單元行,通過將其推入堆棧。 B-UIViewController有當它加載的UINavigationBar,和ProfileViewController不斷根據需要:)導航欄

我所希望做的是保持UINavigationBar的視圖時加載的情況下,1模態,裏面填充UINavigationBar而不是覆蓋整個視圖。 (IE,我希望模式出現在導航欄下方的A-UIViewConroller內 - 使其尺寸更小)

有人可以幫助我嗎?我是否需要製作自己的自定義ModalViewController類 - 不會是ProfileUIViewController?它是否需要一些我沒有給它的實例方法?任何方向將是巨大的:)

回答

2

導航欄是由導航控制器管理,而不是由您的視圖控制器。當您將視圖控制器推入導航控制器時,導航控制器將使用navigationItem中的信息來確定要放置在導航欄中的內容。但是,當您以模態方式顯示視圖控制器時,它不在任何導航控制器內,因此沒有條形圖。對於模態的情況下

一種簡單的解決方案是創建一個新的UINavigationController與您的視圖控制器作爲其根視圖控制器,和顯示器的模態,而不是直接顯示您的視圖控制器。

+0

我想創建一個新的'UINavigationController' INSIDE'A-UIViewController'我的情況?將新的navigationController的根視圖控制器設置爲「A-UIViewController」,然後以模態方式顯示「UINavController」?也許我錯過了一些東西。 – user546459 2011-02-26 21:40:54

+1

你可能有''self presentModalViewController:profileController animated:YES]''。將其更改爲'UINavigationController * nav = [[[UINavigationController alloc] initWithRootViewController:profile] autorelease]; [self presentModalViewController:nav animated:YES];' – Anomie 2011-02-26 21:50:05

+0

Anomie - 謝謝!這至少讓我有一個工作在頂部的navBar。我困惑的原因是我已經調用'[self.navigationController presentModalViewController:profileVC animated:YES]'。我真正喜歡的是顯示UNDERNEATH的模式,顯示在'A-UIViewController'裏面的當前NavBar,而不是創建一個全新的navBar。 – user546459 2011-02-26 21:57:14