将图像UIBarItem添加到UINavigationController或替代

时间:2012-05-16 09:07:28

标签: ios uiview uinavigationcontroller

我有一个UINavigationController,在应用程序上有一个左右按钮,用作一个硬件的遥控器。我想通过在右侧按钮左侧的导航栏中显示一个图标来显示硬件已连接到应用程序。从文档中看起来好像我只能添加UIBarButtonItems,这让我怀疑我的“连接LED”指示灯还有另一个更常规的位置。

所以我的问题是我可以在UINavigationController导航栏中显示一个图标,如果没有,我应该在哪里显示它?

4 个答案:

答案 0 :(得分:0)

UINavigationBarUIView的子类,因此您可以像这样添加项目:

[navBar addSubview:whatever];

导航栏是导航控制器的属性(即您可以像self.navigationController.navigationBar一样引用它。)

答案 1 :(得分:0)

对于这样的事情,并没有真正的“传统地方”。 :)

我怀疑这个'连接LED'应该显示在所有视图上,而不管当前视图(及其UINavigationItem)。如果这是正确的,最简单的方法可能是不将该图标放在实际的UINavigationBar中,而是将其作为单独的UIView放在UINavigationBar超级视图中< /强>

答案 2 :(得分:0)

你应该能够以编程方式创建一个uiview并将其添加为导航栏的子视图

UIImageView *connectedView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"connected-icon.png"]];
[self.navigationController.navigationBar insertSubview:connectedView atIndex:0];
[connectedView release];

如果insertSubview无法正常工作,请尝试使用addSubview:

[self.navigationController.navigationBar addSubview:connectedView];

您可能希望将connectedView创建为属性,这样您就可以(更多)在不再“连接”时轻松删除它。

see this other examples of the approach

答案 3 :(得分:0)

试试这段代码

[[[yourViewController viewControllers] lastObject] navigationItem].titleView = yourImageView;

为我自定义邮件控制器中的导航栏。希望你能从这里得到一些想法。