【问题标题】:How to create non-hierarchical navigation in iPad App如何在 iPad App 中创建非分层导航
【发布时间】:2014-07-07 20:24:59
【问题描述】:

我有一个 iPad 应用程序,它有三个主屏幕,每个屏幕都有自己的 ViewController。 这些屏幕上有用于导航到其他屏幕的按钮。

这些屏幕之间的导航不是分层的。必须可以从屏幕 1 导航到 3,然后导航到 2,再到 1,依此类推。所以,我不想 push 和 pop,只是显示下一个 ViewController。

我不知道如何构建这样的结构。它看起来有点像一个选项卡式应用程序,但还有其他方法可以实现吗?顺便说一句,我使用故事板。从一页切换到另一页时也不需要动画。

【问题讨论】:

  • 您可以创建一个自定义容器视图控制器,允许在其子项之间导航,无论您定义什么方式。您希望用户如何在它们之间移动?
  • 每个屏幕都有两个按钮可以导航到另一个屏幕。屏幕 1 有转到 2 和 3 的按钮,屏幕 2 有转到 1 和 3 的按钮,屏幕 3 ...

标签: objective-c xcode ipad


【解决方案1】:

如果您希望获得分层 UINavigationController 的“幻灯片”动画,有几个选项。

您可以使用 UINavigationController 中的 popToViewController 方法来实现这一点。要使动画朝着正确的方向前进,您可以使用自定义过渡。

- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated

你可以做的另一件事,取决于你需要保存多少导航,以及你是否需要在返回时有状态,只是将 viewControllers 的新实例推送到 UINavigationController 并依靠它来管理堆栈的内存很好。

如果您可以在没有这些转换的情况下生活,那么您认为 UITabBarController 是一种更好的方法是正确的。

希望这会有所帮助。

【讨论】:

  • 动画不是必需的(甚至是不需要的)。那么,一个 UITabBarController 是要走的路吗?
  • 按照您的建议,我一直在研究 UITabBarController 解决方案。我在 TabBarController 中嵌入了三个 ViewController。当我想从一个页面切换到另一个页面时,我需要访问 ViewController 的 self.tabBarController 属性。该属性为零。我认为这与我没有显示选项卡栏和选项卡项这一事实有关。对此有什么想法吗?我不想显示标签栏。
  • 您可以这样做的一种方法是通过将标签栏从屏幕上移开或覆盖它来隐藏它。在这种情况下,您必须向 tabBarController 发送命令才能在视图之间切换。为此,只需使用 [controller setSelectedIndex:index];其中controller 是UITabBarController,index 是你试图呈现的视图控制器的索引
  • 我在实现完整结构时仍有问题。在 StoryBoard 中,我在 TabBarController 中嵌入了三个 ViewController。但是,ViewControllers 的 tabBarController 属性保持为 nil,parentViewController 属性保持为 nil,而两者都应包含对 TabBarController 的引用。我将我的应用程序与 Xcode 中的模板选项卡式应用程序进行比较,但没有发现任何差异。我仍然缺少一些东西,但是什么??
  • 嗯.. 没有看到代码的想法。我现在的建议是从 Xcode UITabBarController 模板打开一个新项目,然后开始将您的功能复制到其中。慢慢做,你可能会看到它在哪里中断。抱歉,我无法提供更多帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
  • 2023-03-14
  • 1970-01-01
  • 2017-02-13
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
相关资源
最近更新 更多