Ios 创建嵌套的表视图还是单独的页面?

Ios 创建嵌套的表视图还是单独的页面?,ios,uitableview,swift,ios8,tableview,Ios,Uitableview,Swift,Ios8,Tableview,我正在尝试为我的iOS应用程序创建选项页面。我有一系列的分类如下: var options = [ "Location", "Calculation Method", "Juristic Method", "Manual Adjustment", "Daylight Saving Time" ] func tableView(tableView: UITableView, numberOfRowsInSection section: Int) ->

我正在尝试为我的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
}
var options = [ 
    "Location" : ["location-enable-gps", "location-choose-list", "location-choose-map"], 
    "Calculation Method": ...,
    "..."
]
然后我将它们加载到我的视图控制器中,如下所示:

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
}
var options = [ 
    "Location" : ["location-enable-gps", "location-choose-list", "location-choose-map"], 
    "Calculation Method": ...,
    "..."
]
这给了我一个完美的单表视图!现在,我正在尝试处理每行的单击,以显示该类别的选项列表。例如,该位置将有一个开关,以启用GPS或允许他们选择其位置下拉列表或地图。计算方法将显示复选标记的表格视图。夏令时将使用开关显示单行


我的问题是什么是解决所有这些问题的最佳方法?我应该创建一个数组字典来保存我的选项并重用表,还是应该为每个选项类别创建一个单独的视图?我发现这方面的教程相互矛盾或过时,而且我在转换Objective-C中的示例时也遇到困难。任何帮助或指导都将不胜感激

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

要做到这一点,您可以拥有一个“类别”数组,以保持节的顺序。这将匹配您在问题中定义的选项数组。除此之外,我还准备了一本关于子类别选项的词典。对于位置,它将如下所示:

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
}
var options = [ 
    "Location" : ["location-enable-gps", "location-choose-list", "location-choose-map"], 
    "Calculation Method": ...,
    "..."
]
在上面的字典中,Location的数组值是我定义的常量。这是因为您将彻底改变每个单元的行为。启用GPS可能只是一个复选框,从列表中选择可能会更好地向下搜索/模式,并且当选择显示选定位置时,从地图中选择也可能适用于模式设计模式是当视图控制器弹出,然后在操作后解除


让我知道这一切是否有意义,看起来您的选择将非常多样化,所以不幸的是,我不认为有一种方法向下钻取,集合视图最有效。也就是说,你想让你的用户如何体验你的应用程序完全取决于你

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

要做到这一点,您可以拥有一个“类别”数组,以保持节的顺序。这将匹配您在问题中定义的选项数组。除此之外,我还准备了一本关于子类别选项的词典。对于位置,它将如下所示:

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
}
var options = [ 
    "Location" : ["location-enable-gps", "location-choose-list", "location-choose-map"], 
    "Calculation Method": ...,
    "..."
]
在上面的字典中,Location的数组值是我定义的常量。这是因为您将彻底改变每个单元的行为。启用GPS可能只是一个复选框,从列表中选择可能会更好地向下搜索/模式,并且当选择显示选定位置时,从地图中选择也可能适用于模式设计模式是当视图控制器弹出,然后在操作后解除


让我知道这一切是否有意义,看起来您的选择将非常多样化,所以不幸的是,我不认为有一种方法向下钻取,集合视图最有效。也就是说,你想让你的用户如何体验你的应用程序完全取决于你

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

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