UIToolbar上的可更新自定义视图

时间:2011-04-24 07:20:44

标签: iphone objective-c cocoa-touch uiview uitoolbar

我想做一个小区域在UIToolbar的中间提供一些信息,并想知道最好的方法是什么。

我需要显示一些文本和图形,当新信息到达时,这两者都需要更新(大约每3秒钟)。该图形类似于iPhone信号强度指示器,因此可以自定义绘制或从3种图形中选择一种(低,中,高强度)。

我可能会使用initWithCustomView:来创建UIBarButtonItem,但我希望该视图可以点击(以允许用户更改显示的信息)。

制作这种观点的最佳方式是什么?我可以使用NIB,还是需要在视图中进行自定义绘图?更新按钮的最佳方法是什么?我假设我每次都要重新制作toolbarItems数组,并在信息发生变化时进行设置。有更清洁的方法吗?感谢。

2 个答案:

答案 0 :(得分:2)

使用initWithCustomView:听起来是个不错的选择。您可以按照自己的方式创建自定义视图:使用NIB,通过绘制,甚至使用图像。它也可以有自己的子视图。它可以是从UIView继承的任何对象。 (所以,如果你愿意,你甚至可以通过使用UIButton,自定义UIControl或带有手势识别器的自定义UIView来使其可操作。)

如果只保留指向自定义视图UIBarButtonItem的指针,则不必重新制作toolbarItems(或者,就此而言,在添加所有按钮项后对其执行任何操作)。它可以是一个实例变量。然后,要更新自定义视图,您可以像访问任何其他视图一样访问它。我从来没有真正试过这个,但我看不出这样做有什么问题。

你听起来像是你经常想到的。希望这有用。

答案 1 :(得分:2)

我需要相同的解决方案,并希望您提供一些代码示例。所以我最终在IB中完成了所有工作,步骤如下:

  1. 在IB中创建没有项目的UI工具栏。 (添加UIView后,将再次添加条形按钮项目)
  2. 将UIView添加为UIToolbar的子视图
  3. 将UILabel添加到已经是UIToolbar子视图的UIView的子视图中。
  4. 从UIToolbar,UIView和每个UILabel创建IBOutlets,然后您可以在应用中引用标签。
  5. 我确实将背景设置为clearColor,因此文本显示在UIToolbar的顶部,没有任何框或边框。
  6. 文本动态更新,这是期望的结果。
  7. 希望这可以帮助别人,因为这一直困扰着我。

    enter image description here