1

我在 .xib 中添加了一个导航栏。我这样做是因为我想定制它的很多东西。我希望我的导航控制器在该屏幕中使用该导航栏。

我创建了名为 navBar 的出口并做了:

[self.navigationController.navigationBar = navBar;

但它说 navigationBar 是只读的。是否可以将我现有的导航控制器与我添加到屏幕的导航栏链接起来?

4

3 回答 3

1

在我看来,您可能实际上并不想使用UINavigationBar。正如参考文档中所述:

UINavigationBar 类实现用于导航分层内容的控件。它是一个栏,通常显示在屏幕顶部,包含用于在层次结构中上下导航的按钮。主要属性是左(后)按钮、中心标题和可选的右按钮。您可以为其中的每一个指定自定义视图。

因此,如果您计划的自定义不仅仅是添加按钮、更改其颜色/背景、不透明度、隐藏等。您最好创建一个模仿导航栏外观的UIView 。

这是一个示例,说明如何为您的 UIView 提供导航栏的渐变外观

它更灵活,实际上很容易做到,但是你有很多阅读和测试在你面前:)。

以防万一如果它只是你想添加的按钮,你最好使用UIToolbar代替

于 2012-07-24T07:51:47.363 回答
0

你不能那样做。由于导航控制器的导航栏嵌入了很多设置,因此它是只读属性,您不应该更改它。

您到底想通过界面构建​​器实现什么目标。我的意思是,使用最新的 API,通过自定义原始 navcontroller 的导航栏,只需几行代码即可轻松完成所有操作。

于 2012-07-23T19:41:37.463 回答
0

您不会在界面生成器中管理导航栏。此外,您不会尝试设置导航控制器的 navigationBar 属性。

要进行更改,您需要更改 navigationBar 的 navigationItem 属性

[self.navigationController.navigationBar setItems:newNavItems];

您还可以对导航栏进行其他更改,例如设置背景图像或使其半透明

self.navigationController.navigationBar.translucent = true;
[self.navigationController.navigationBar setBackgroundImage:img forBarMetrics:barMetrics];
于 2012-07-23T19:44:45.987 回答