2012-03-17 48 views
-2

我必須實現基於標籤欄的應用程序。有兩個要求在基於tabbarcontroller的項目的屏幕頂部顯示tabbar滾動

  1. 標籤欄項目將超過10,他們應該滾動不顯示在下一頁。我有這方面的參考資料並正在研究它。但是我沒有得到第二個出發點。
  2. 它應該在屏幕頂部顯示(tabbar)而不是底部,大部分是在應用中實現的,如鏈接http://appworld.blackberry.com/webstore/content/screenshots/21999/?lang=en所示。

因此,如果任何人有任何想法或代碼,請讓我知道和幫助我。

回答

1

顯然你不能使用UIKit的UITabBarController。

您需要定義您自己的自定義解決方案。

可能的解決方案:

  1. 投放在屏幕頂部的UIScrollBar
  2. 實例化的滾動條類型的自定義的一些UIButton的,你每次的UIButton定義每個按鈕
  3. 關聯到圖像內不同的UIView(或不同的UIViewController): eg Button1 - > View1;按鈕2 - >查看2
  4. 每次單擊按鈕時,只需將選項卡欄下方的視圖替換爲所選視圖即可。

點[3]爲什麼最好使用視圖控制器而不是視圖?因爲使用視圖控制器可以爲每個標籤欄功能分開邏輯功能,而不是在同一視圖控制器中填充所有內容。 基本上你有一個「主」視圖控制器,它實例化滾動視圖(帶按鈕)幷包含另一個子視圖(最初爲空),稱爲「容器」,它將佔用屏幕的其餘部分。 現在當你點擊每個按鈕時,你將alloc-init它相應的視圖控制器(我們稱它爲「child1」),你將加載它的視圖(「child1.view」),然後你將它添加爲子視圖的「容器「:

[containter addSubview:child1.view]
(不要忘記先刪除容器中現有的子視圖)。 重要提示:唯一的視圖控制器將響應諸如界面旋轉之類的事件,只會是「主要」而不是「子」。所以界面方向管理必須仍由「主」完成,所有方向更改事件都必須由您的代碼發送到子容器。 這種方法的好處是,可以在其視圖控制器中完全實現單個子項的功能,而「主」將作爲容器和選項卡管理器工作,而不具有核心邏輯功能。

將此邏輯移動到更高級別的視圖控制器以實現高度的可重用性是有道理的,但它會更復雜。

+0

感謝你在[3]中解釋的很好的解釋,它很容易實現視圖部分,但由於邏輯複雜,數據關聯也很複雜,所以我需要實現視圖控制器,請你指導我如何顯示/更改視圖控制器點擊我的按鈕,因爲滾動視圖也將在視圖控制器之一subview.please幫助我。 – rao 2012-03-18 08:57:38

+0

看到我編輯的答案;如果解決方案符合您的需求,請標記爲已回答。 – viggio24 2012-03-18 09:10:13

+0

您好再次感謝您的整潔和清晰的解釋。但是我對這條線感到有點困惑:「把這個邏輯轉移到更高層次的視圖控制器以獲得高度的可重用性是有意義的」。請讓我知道如何標記回答的問題,以便我們做到這一點。 – rao 2012-03-18 12:43:43

相關問題