2012-08-25 54 views
2

我想知道如何實現iPhone的Twitter導航風格。像iPhone中的導航風格

當您在時間線上點擊推文時,(自定義)選項卡欄在從時間線到詳細視圖的過渡期間保持原位。這表明標籤欄是「主」UIViewController的子視圖,其中包含4個UINavigationControllers的數組,每個標籤一個。當按下標籤時,UIViewController將從當前可見的UINavigationController中刪除其視圖,並將新視圖添加爲子視圖。在這種方法中,標籤欄不是任何導航堆棧的一部分,因此它在每次轉換時都保持原位。

但是,當您在詳細信息視圖中點擊URL時,選項卡欄將移出屏幕,並出現一個新的工具欄。這與上述理論相矛盾。

Tweetbot使用完全相反的官方Twitter應用程序的導航風格。如果您在Tweetbot的時間軸上點按推文,則標籤欄確實會移出屏幕。選項卡欄在轉換過程中永遠不會保留原位。他們可能使用一個UINavigationController,主要UIViewController +標籤欄作爲rootviewcontroller。我假設時間軸通過委託或類似的東西在用戶點擊推文時在主要UIViewController上調用[self.navigationController pushViewController:]

事實上,Twitter的iPhone混合了第一個理論和Tweetbot導航風格背後的理論。我怎樣才能實現官方的Twitter應用程序呢?

回答

2

這可能是一個過於簡單的描述,而且很多是由內存去,但我認爲這應該讓你對你的方式...

根視圖控制器大多是從無到有實現了一個標籤欄控制器。它最初是用於自定義標籤欄樣式,之前有簡單的iOS API。但是,通過繼續擁有代碼,添加工具欄/選項卡欄交換並不困難。

根視圖控制器擁有標籤欄視圖和工具欄視圖。根視圖控制器是每個選項卡導航控制器的代表;當導航控制器推動新視圖控制器時,主視圖控制器會檢查它是否有toolbarItems,並管理交換。

出於可用性的原因,用工具欄替換標籤欄通常是個好主意。標籤欄爲屏幕上的內容提供接地;認爲你的瀏覽器的選項卡。標籤欄項目還允許您跳轉到層次結構中的根視圖控制器,方法是在選項卡處於活動狀態時點擊它。 (這不是最容易發現的功能,但至少它是標準的系統範圍。)

這不是一個硬性規則。在導航層次結構中替換「葉子」的標籤欄很常見;想想Music.app和Photos.app。除非你有強有力的理由,否則只要避免它。