2013-06-22 32 views
0

假設我正在嘗試創建類似聯繫人應用的內容。我有一個TableViewController(TVC),您可以在其中選擇一個項目並查看關於它的所有信息。您可以點擊編輯,然後顯示帶有靜態單元的TVC。同樣的TVC也用於添加新項目。將UINavigationBar添加到以模態方式呈現的TableViewController?

目前,我有我想要重新使用一個TVC。當用戶編輯我的模型時,我將TVC推入導航堆棧,但當用戶創建新項目時,我會以模態方式呈現TVC。

顯然,當TVC推自動獲得一個導航欄。另一方面,當我以模態方式呈現它時,我創建了自己的NavigationBar(帶有按鈕以及我需要的其他所有內容),並將其添加爲子視圖。這提出了兩個問題:

  • NavigationBar位於第一個單元格之上。
  • NavigationBar與其他單元格一起滾動。

對於我讀過的,這是因爲我將NavigationBar添加到TVC本身。
有一個TableView中的導航控制器內部聽起來像一個選項,但沒有TVC我不能有靜態的細胞對我的TableView。

我想過不再重新使用我的TVC,但我還是會同樣的問題卡住,因爲我需要一個TVC與頂部的一欄。

我如何添加一個導航欄到TVC靜態細胞,當它有模式呈現的? 有沒有解決這個問題的另一種方法?

順便說一句,我用故事板和我針對iOS6的+,所以我不能使用presentModalViewController:

回答

2

您可以隨時創建代碼一個UINavigationController,然後將現有的表視圖控制器作爲根視圖控制器。然後,您可以以模態方式呈現新創建的UINavigationController。

隨着UINavigationController的情況下,你將有一個UINavigationBar的補充。

通過使用方法instantiateViewControllerWithIdentifier從故事板中獲取現有的UITableViewController。不要忘記通過設置故事板ID來首先在故事板中設置標識符。例如,下面我將標識符設置爲CategoriesViewController。

setting Storyboard ID

然後,我可以用下面的代碼獲得它:

UITableViewController *tableViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"CategoriesViewController"]; 
UINavigationController *navcon = [[UINavigationController alloc] initWithRootViewController:tableViewController]; 
[self presentViewController:navcon animated:YES completion:nil]; 
+0

,以確保我明白什麼是應該發生的:我仍然可以通過推送賽格瑞推原TableViewcontroller(「CategoriesViewController」) ,但是當我想模態呈現它,我提出了新創建的NavigationController(我的TVC裏嵌入)與「presentViewController:」 ......它會呈現模態,因爲它不與任何SEGUE相關? – Eric

+0

@Eric是的。你可以試試看。 –

+0

工程就像魅力!我感謝您的幫助。 只是一個簡單的問題,也不是很重要,但那種相關:在TVC提出的模態,爲什麼「self.navigationItem.hidesBackButton = YES;」在'self.navigationController.navigationItem.hidesBackButton = YES;'時工作不? – Eric

相關問題