【问题标题】:Create nested table view or separate page?创建嵌套表视图或单独的页面?
【发布时间】:2015-04-28 19:17:01
【问题描述】:

我正在尝试为我的 iOS 应用创建一个选项页面。我有一系列这样的类别:

var options = [
    "Location",
    "Calculation Method",
    "Juristic Method",
    "Manual Adjustment",
    "Daylight Saving Time"
]

然后我将它们加载到我的视图控制器中,如下所示:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return options.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = UITableViewCell(style: .Default, reuseIdentifier: "Cell")
    cell.textLabel?.text = options[indexPath.row]

    return cell
}

这给了我一个完美的单一表格视图!现在我正在尝试处理每一行的点击以显示该类别的选项列表。例如,Location 将有一个开关来启用 GPS 或允许他们选择他们的位置下拉菜单或地图。 Calculation Method 将显示复选标记的表格视图。 Daylight Saving Time 将打开一个带有开关的单行。

我的问题是这一切的最佳方法是什么?我应该创建一个数组字典来保存我的选项并重用表格,还是应该为每个选项类别创建一个单独的视图?我在这方面发现了相互冲突或过时的教程,而且我在转换来自 Objective-C 的示例时也遇到了麻烦。任何帮助或指导将不胜感激!

【问题讨论】:

    标签: ios uitableview swift ios8 tableview


    【解决方案1】:

    我建议为每个选项类别创建单独的视图。从上面的示例中,您最终会得到 5 个视图控制器:位置、计算方法、法律方法、手动调整和夏令时。然后对于您的计算方法,因为它是复选标记的表格视图,所以我可能有一个数组,将每个选项存储在 CalculationMethodsViewController 中。其他人也一样。如果他们需要显示其他数据,请将其放在新的视图控制器中 - 而不是在您原来的视图控制器中。

    【讨论】:

      【解决方案2】:

      对于您的顶级类别,我建议使用 tableview 的各个部分来分隔事物。然后一个部分中的每一行将对应于详细的选项。

      为此,您可以有一个“类别”数组来保持部分的顺序。这将匹配您在问题中定义的 options 数组。除此之外,我会放置一个子类别选项的字典。对于位置,它看起来像这样:

      var options = [ 
          "Location" : ["location-enable-gps", "location-choose-list", "location-choose-map"], 
          "Calculation Method": ...,
          "..."
      ]
      

      在上面的字典中,Location 的数组值是我定义的常量。这是因为您将彻底改变每个细胞的行为。 Enable GPS can just be a checkbox, Choosing from a list may be better to drilldown/modal (and when selected display selected location), choosing from map may also lend itself to a modal design ("Modal" is when a view controller pops up然后在一个动作后关闭)。

      如果这一切都有意义,请告诉我,看起来您的选择会非常多样化,所以很遗憾,我认为没有一种方法(向下钻取,集合视图)最有效。话虽如此,这完全取决于您希望用户如何体验您的应用程序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多