gpt4 book ai didi

ios - 如何在 iOS 中创建分层菜单?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:45:50 25 4
gpt4 key购买 nike

在我的应用程序中,我有一个定义如下的菜单。菜单上的每个项目都是一个具有以下数据属性的节点:

MenuText :(为该项目显示的文本)

isView : 这个项目是否是叶级项目

subMenus :如果isView为false,则该属性下有多个菜单项。

因此,它是一个可以延伸到任何深度的树结构。菜单中的项目可以定期更改,因此必须保持灵活的实现。此数据存储在 plist 文件中,并在代码(已实现)中读入 NSArray

我现在需要在左侧创建一个滑出式菜单,该菜单将由该数据层次结构填充。我已经创建了菜单 Pane 并向其添加了滑动手势,所有这些都工作正常。菜单必须是可折叠菜单,点击一个菜单项会展开其下方的 subViews。如果单击的项目是一个 View ,则新 View 将加载到屏幕的其余部分,并包含适当的数据。

我面临的问题是从 NSArray 数据填充菜单(这是一个 UITableView)的逻辑。以下是我想出的两种方法。

  1. 创建一个 UITableView,其中的部分数与菜单顶层的项目数一样多。然后递归地遍历菜单项。对于不是 View 的每个菜单项(即它具有 subMenus),创建一个新部分,其行数等于其下的 subMenus 数。当我遇到一个菜单项是一个 View 并且没有进一步的 subMenus 时,将它作为一行添加到为它上一级菜单创建的子部分。

  2. 创建一个菜单,其中包含一个部分,行数与顶层菜单项的数量一样多。单击菜单项时,在其下方插入行以表示其子菜单。单击同一级别的另一个菜单项时,通过删除插入的行来折叠先前展开的菜单。单击没有子菜单的菜单项时,屏幕的其余部分将填充数据。

我已经尝试了这两种方法,但无法超越最初的步骤。对于第一种方法,我知道我需要添加一个 UITableView 作为 UITableViewCells 的一部分,这很好,但我需要递归地这样做。对于第二种方法,我需要知道单击的每个项目的 indexPath,它可以转到多个级别。

我想在这里得到一些关于我应该采用哪种方法的建议,以及一些关于如何去做的指导。另外,如果有更好的方法可以做到这一点,请指教。谢谢。

最佳答案

在我看来,使用 UINavigationController 是最简单的方法。您可以根据需要推送任意数量的 UITableView。如果它不符合您的设计要求,您可以尝试可扩展的 UITableViews。很少有开源:

  1. JKExpandTableView
  2. SDNestedTable
  3. iOS-Tree-Component

关于ios - 如何在 iOS 中创建分层菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18711652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com