解决深度嵌套的视图控制器层次结构
Solve Deeply Nested View Controller Hierarchy
这更像是一个应用程序设计问题,而不是特定于代码的问题。
我的问题是我有一个 iPhone 应用程序,它使用单个 UINavigationController,用户可以点击数据项以推送包含越来越详细信息的 UIViewControllers。
示例:
主菜单 -> 类别列表 -> 品牌列表 -> 品牌详情 -> 产品列表 -> 产品详情 -> 关联品牌列表 -> 品牌详情 -> 产品列表 -> 产品详情 -> 等
当他们想要返回主菜单时,他们必须点击后退按钮,比如 10 次。这显然是一种糟糕的用户体验,但由于 iPhone 上的屏幕数量 space 需要大量补充视图才能深入嵌套数据。
你们是怎么解决这个问题的?
我听说 "hamburger" 按钮/侧边抽屉是可行的方法,但这在 WWDC 2014 上是一个很大的 "no no" 并且它会导致像在亚马逊应用程序中同时有一个汉堡包的情况和后退按钮,同时在其他不同时间也只显示一个或另一个。
我也在考虑可能点击导航栏标题以返回到主菜单,但它似乎并不直观,我还没有看到它在其他应用程序中使用过。
任何有关您如何设法解决此应用程序设计问题的建议都会有所帮助。
编辑:
我知道如何放松,也知道如何扎根。问题是关于 "app design"。您如何以某种方式设计您的应用程序,以便您的用户不必点击后退按钮 10 次?我不想在每个视图上添加 "Go to main menu" 按钮,Apple 特别指出 side-drawers/hamburger 按钮是个坏主意。
如果你想导航到第一个 viewController,你可以使用 popToRootViewControllerAnimated: 或者你可以使用 popToViewController:animated: 如果你想导航到特定的 viewController.
使用popToRootViewControllerAnimated
回到根目录viewController。
-(IBAction)backButtonClick:(id)sender {
[self.navigationController popToRootViewControllerAnimated:YES];
}
在很多方面,只要上下文继续相同,按照 Apple 的标准,具有深层嵌套的东西不一定是坏事 'app design'。例如,假设您有一个播放视频的教育应用程序。相当深的层次结构可能如下所示:
查看教师页面 -> 按教师查看课程 -> 查看课程中的第一课 -> 查看课程中的突击测验
在这种情况下,深度嵌套的导航控制器是您在标准网页上看到的隐式面包屑。推送到导航控制器堆栈上的所有内容在前一个视图控制器的上下文中都是有意义的。
您能否在此提供有关具体用例的更多详细信息?很难帮助解决这样一个笼统的问题。您也可以考虑查看 StackExchange 上的 UserExperience 而不是 Whosebug,后者专门用于编码问题。
这更像是一个应用程序设计问题,而不是特定于代码的问题。
我的问题是我有一个 iPhone 应用程序,它使用单个 UINavigationController,用户可以点击数据项以推送包含越来越详细信息的 UIViewControllers。
示例:
主菜单 -> 类别列表 -> 品牌列表 -> 品牌详情 -> 产品列表 -> 产品详情 -> 关联品牌列表 -> 品牌详情 -> 产品列表 -> 产品详情 -> 等
当他们想要返回主菜单时,他们必须点击后退按钮,比如 10 次。这显然是一种糟糕的用户体验,但由于 iPhone 上的屏幕数量 space 需要大量补充视图才能深入嵌套数据。
你们是怎么解决这个问题的?
我听说 "hamburger" 按钮/侧边抽屉是可行的方法,但这在 WWDC 2014 上是一个很大的 "no no" 并且它会导致像在亚马逊应用程序中同时有一个汉堡包的情况和后退按钮,同时在其他不同时间也只显示一个或另一个。
我也在考虑可能点击导航栏标题以返回到主菜单,但它似乎并不直观,我还没有看到它在其他应用程序中使用过。
任何有关您如何设法解决此应用程序设计问题的建议都会有所帮助。
编辑: 我知道如何放松,也知道如何扎根。问题是关于 "app design"。您如何以某种方式设计您的应用程序,以便您的用户不必点击后退按钮 10 次?我不想在每个视图上添加 "Go to main menu" 按钮,Apple 特别指出 side-drawers/hamburger 按钮是个坏主意。
如果你想导航到第一个 viewController,你可以使用 popToRootViewControllerAnimated: 或者你可以使用 popToViewController:animated: 如果你想导航到特定的 viewController.
使用popToRootViewControllerAnimated
回到根目录viewController。
-(IBAction)backButtonClick:(id)sender {
[self.navigationController popToRootViewControllerAnimated:YES];
}
在很多方面,只要上下文继续相同,按照 Apple 的标准,具有深层嵌套的东西不一定是坏事 'app design'。例如,假设您有一个播放视频的教育应用程序。相当深的层次结构可能如下所示:
查看教师页面 -> 按教师查看课程 -> 查看课程中的第一课 -> 查看课程中的突击测验
在这种情况下,深度嵌套的导航控制器是您在标准网页上看到的隐式面包屑。推送到导航控制器堆栈上的所有内容在前一个视图控制器的上下文中都是有意义的。
您能否在此提供有关具体用例的更多详细信息?很难帮助解决这样一个笼统的问题。您也可以考虑查看 StackExchange 上的 UserExperience 而不是 Whosebug,后者专门用于编码问题。