2011-04-24 34 views
1

我想制作一个小区域以在UIToolbar的中间显示一些信息,并且想知道做到这一点的最佳方法是什么。可更新的UIToolbar上的自定义视图

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

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

制作该视图的最佳方式是什么?我可以使用NIB,还是需要在视图中进行自定义绘图?更新按钮的最佳方式是什么?我假设我必须每次都重新制作toolbarItems阵列,并在信息更改时进行设置。有没有更干净的方法来做到这一点?谢谢。

回答

2

使用initWithCustomView:听起来像是一个好方法。您可以使用任何您想要的方式创建自定义视图:使用NIB,通过绘制它,甚至使用图像。它也可以有自己的子视图。它可以是从UIView继承的任何对象。 (所以,如果你愿意,你甚至可以通过使用UIButton,自定义的UIControl或附带手势识别器的自定义UIView来实现它。)

您不应该重新制作toolbarItems(或者,如果你只是保留一个指向你的自定义视图UIBarButtonItem的指针,那么在你添加完所有按钮项后,对它做任何事情。它可能是一个实例变量。然后,要更新自定义视图,您可以像访问其他任何视图一样访问它。我从来没有尝试过,但我看不出有任何问题。

你听起来像你主要想到的。希望这是有帮助的。

+0

谢谢,这很有帮助。我最终编写了一个小测试应用程序,它创建了一个带有标签和图像的视图,并使用'initWithCustomView:'将其放入。它运行良好,并可通过与视图的连接更新。我正在使用NIB文件将它变成一个自定义视图控制器来简化事情。 – 2011-04-25 07:46:04

+0

很高兴解决。感谢更新。很高兴知道。 – 2011-04-25 10:46:36

2

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

  1. 在IB中创建UItoolbar,没有项目。 (一旦添加UIView,将再次添加一个栏按钮项)
  2. 将UIView添加为UIToolbar的子视图
  3. 将UILabels添加到已经是UIToolbar的子视图的UIView的子视图。
  4. 从UIToolbar,UIView和每个UILabel创建IBOutlets,然后可以引用应用中的标签。
  5. 我确实将背景设置为clearColor,所以文本显示在UIToolbar的顶部,没有任何框或边框。
  6. 动态更新文本,这是期望的结果。

希望这可以帮助别人,因为这一直在困扰我一段时间。

enter image description here