2011-04-24 35 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