2011-08-10 86 views
12

我有一個UITableViewController類型的類。 此類有一個UINavigationBar類型的成員,我用它來添加表視圖的編輯按鈕。pushViewController without navigationcontroller

使用此方法調用無效。

[self.navigationController pushViewController:controller]; 

我怎麼能推的詳細視圖到視圖中選擇一個錶行沒有一個UINavigationController包裝我的UITableViewController後?

回答

5

如果沒有導航控制器,則無法將視圖控制器推到導航控制器上。如果你想要推控制器並讓它顯示最上面的控制器和所有東西,只需使用UINavigationController並完成它。

您可以將任意UINavigationItem秒推送到您的UINavigationBar上,當用戶使用後退按鈕時會通知酒吧的代表,以便您可以採取適當的措施。有關更多信息,請參閱the documentation

35

如果您不想使用導航控制器,最接近的選擇是模態視圖控制器。 。

[self presentViewController:controller animated:YES completion:nil]; 

這將控制器從底部滑入屏幕,或者,如果你改變控制器的modalTransitionStyle它可以翻轉或褪色

要關閉控制器只要致電:

[self dismissViewControllerAnimated:YES completion:nil]; 
+0

你救了我一天的男人,謝謝 –

9

我會將UITableView包裝在UINavigationController中並隱藏UINavigationBar。

[self.navigationController setNavigationBarHidden:YES animated:NO]; 

然後創建一個後退按鈕,將ViewController彈出堆棧。

[self.navigationController popViewControllerAnimated:YES] 
9

還可以做的是像往常一樣使用導航控制器,然後隱藏它。

要使用故事板隱藏導航控制器:選擇它並取消選中屬性檢查器中的「顯示導航欄」。其他人可能會建議隱藏每個控制器中的導航欄,但問題在於它會出現一毫秒,然後消失。

Navigation Controller attributes tab

1

這是真的,沒有一個UINavigationController你不能推視圖控制器。是你而現在視圖控制器模式方式通過UIViewController.present(_ viewControllerToPresent:, animated:, completion:)

但它可以創建一個自定義SEGUE顯示視圖控制器就好像它是一個推(或任何你想要的其他動畫),但它似乎使用UINavigationController只是使事情更輕鬆。

下面是一些相關鏈接的文檔:

UINavigationController Class Reference

Customizing the Transition Animations

Presenting a Modal View Controller

相關問題