我正在尝试为我的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转换示例。任何帮助或方向将不胜感激!
答案 0 :(得分:4)
我建议为每个选项类别创建单独的视图。从上面的示例中,您最终会得到5个视图控制器:位置,计算方法,法律方法,手动调整和夏令时。然后对于你的计算方法,因为它是一个复选标记的表格视图,我可能有一个数组存储CalculationMethodsViewController中的每个选项。其他人也一样。如果需要显示其他数据,请将其放在新的视图控制器中 - 而不是原始视图控制器中。
答案 1 :(得分:1)
对于您的顶级类别,我建议使用tableview的各个部分来分隔。然后,一节中的每一行都对应于详细选项。
为此,您可以使用一系列“类别”来保持各个部分的顺序。这与您在问题中定义的options
数组相匹配。除此之外,我还会提供一个子类别选项词典。对于地点,它看起来像这样:
var options = [
"Location" : ["location-enable-gps", "location-choose-list", "location-choose-map"],
"Calculation Method": ...,
"..."
]
在上面的Dictionary中,Location的数组值是我定义的常量。这是因为您将彻底改变每个单元格的行为。启用GPS可以只是一个复选框,从列表中选择可能更好地向下钻取/模态(当选择显示所选位置时),从地图中选择也可能适合模态设计(“模态”是当视图控制器弹出时然后在行动后解散。
让我知道如果这一切都有意义,看起来你的选择会非常多样化,所以很遗憾我不认为有一种方法(向下钻取,集合视图)效果最好。话虽如此,一切由您决定,您希望用户如何体验您的应用。