【问题标题】:Navigation style like in Twitter for iPhoneiPhone 版 Twitter 中的导航样式
【发布时间】:2012-08-27 08:16:06
【问题描述】:

我试图弄清楚 iPhone 版 Twitter 中的导航样式是如何实现的。

当您在时间线中点击推文时,(自定义)标签栏会在从时间线到详细视图的过渡期间保持原位。这表明选项卡栏是“主”UIViewController 的子视图,其中包含一个包含 4 个UINavigationControllers 的数组,每个选项卡一个。当一个选项卡被按下时,主UIViewController 从它的视图中删除当前可见的UINavigationController 并将新的UINavigationController 添加为子视图。在这种方法中,标签栏不是任何导航堆栈的一部分,因此它在每次转换期间都保持在原位。

但是,当您在详细视图中点击 URL 时,标签栏会移出屏幕并出现一个新的工具栏。这与上述理论相矛盾。

Tweetbot 使用与官方 Twitter 应用完全相反的导航风格。如果您在 Tweetbot 的时间轴中点击一条推文,标签栏会移出屏幕。标签栏在过渡期间永远不会停留在原位。他们可能使用一个UINavigationController,主UIViewController + 选项卡栏作为rootviewcontroller。我假设当用户点击推文时,时间线会通过委托或类似的方式在主 UIViewController 上调用 [self.navigationController pushViewController:]

事实上,iPhone 版 Twitter 将第一个理论与 Tweetbot 导航风格背后的理论混合在一起。如何实现官方 Twitter 应用的功能?

【问题讨论】:

    标签: iphone objective-c ios cocoa-touch


    【解决方案1】:

    这可能是一个过于简化的描述,很多内容都在记忆中,但我认为这应该能让你上路……

    根视图控制器主要是一个从头开始实现的标签栏控制器。在出现简单的 iOS API 之前,它最初是用于自定义标签栏样式。但是,通过继续拥有代码,添加工具栏/标签栏交换并不难。

    根视图控制器拥有标签栏视图和工具栏视图。根视图控制器是每个选项卡导航控制器的代表;当导航控制器推送新的视图控制器时,主视图控制器检查它是否有工具栏项,并管理交换。

    出于可用性原因,将标签栏替换为工具栏通常不是一个好主意。标签栏为屏幕内容提供基础;想想浏览器的标签。标签栏项目还允许您在标签处于活动状态时通过点击它来跳转到层次结构中的根视图控制器。 (这不是最容易发现的功能,但至少它是系统范围内的标准功能。)

    这不是一个硬性规定。在导航层次结构中,将标签栏替换为“叶子”是很常见的;想想 Music.app 和 Photos.app。除非您有强有力的理由,否则请避免使用它。

    【讨论】:

      猜你喜欢
      • 2011-08-25
      • 2013-01-05
      • 1970-01-01
      • 1970-01-01
      • 2013-04-05
      • 2015-04-21
      • 2014-10-12
      • 1970-01-01
      相关资源
      最近更新 更多