创建嵌套表视图或单独的页面?

Posted

技术标签:

【中文标题】创建嵌套表视图或单独的页面?【英文标题】: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 的示例时也遇到了麻烦。任何帮助或指导将不胜感激!

【问题讨论】:

【参考方案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然后在一个动作后关闭)。

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

【讨论】:

以上是关于创建嵌套表视图或单独的页面?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 如何从嵌套对象的视图模型集合中动态创建表结构

如何将两个单独表中的两列拆分为视图中的多行?

AngularJS正确路由视图但样式表损坏

使用来自单独的表视图控制器的选定单元格填充文本字段

MySQL数据库高阶语句之查询视图NULL值

BigQuery SQL:将视图 A 中的子查询作为嵌套表嵌入视图 B