【问题标题】:confusion with NSindexpathforselectedrow与 NSindexpathforselectedrow 混淆
【发布时间】:2016-04-28 21:31:51
【问题描述】:

长话短说,我正在重温一个旧项目,希望能得到关于 indexPathForSelectedRow 的解释!

基本上,我的初始表格视图显示值 1、2 或 3,类似于此数组。

var array1 = ["1", "2", "3"]

一旦用户选择了 1、2 或 3,他们将被转到显示相应嵌套数组值的第二个表视图。

var array 2 = [["11", "12"], ["25", "27"], ["36", "39"]]

例如,如果用户在第一个表格视图中选择了 2,他们将被带到包含 25 和 27 值的第二个表格。

这是使用此代码完成的

if let destViewController = segue.destinationViewController as? RestaurantNameTable {
let indexPath = self.tableView.indexPathForSelectedRow!
destViewController.selectedRestaurants = array2[indexPath.section]

这是我的困惑。

我了解 indexPathForSelectedRow 指的是一个部分和行。

但是,在选择第一个数组时,没有部分,只有 3 行。那么为什么使用数组 1(即 3 行)的 nsindexpathforselectedrow 仍然指的是数组 2 中的正确部分/数组?特别是如果我指的是array2的部分?

换句话说,如果我选择 array1 中的任何行,我就没有部分....当所有 indexpath 都只是一行时,我怎么能说 array2 部分是 indexpath 的=?

除非我的理解有缺陷,否则array1中选择“2”的部分为0,行为1,但array2、“25”和“27”的内容部分为1?这个逻辑是如何工作的?

如果您想要这个问题的新措辞,请询问。我自己也很难过,哈哈。

无论如何,感谢您的寻找和任何帮助!

【问题讨论】:

    标签: arrays swift uitableview logic nsindexpath


    【解决方案1】:

    部分编号不反映部分的数量,它只是分配给它的一个 id。因此对于array1,该部分为0,因为第一部分始终分配为0,除非您另行设置。和数组类似,数组的第一个索引是0,第一个部分是0。

    所以我相信您在使用 array1 时遇到的问题是它是一个单维数组。意思是,对于像 array1 这样的一维数组,当您使用“indexPathForSelectedRow”时,它会在主数组中查找第 0 个数组(第 0 节),然后尝试从该内部数组中检索行。因此,它根本找不到数组,因为没有数组(因为它是一维的)。因此,如果您这样做(将原始数组放在另一个数组中):

    let array1 = [["1", "2", "3"]]
    

    然后这样做:

    if let destViewController = segue.destinationViewController as? RestaurantNameTable {
    let indexPath = self.tableView.indexPathForSelectedRow!
    destViewController.selectedRestaurants = array2[indexPath.section]
    

    那么它将与array2 完全相同。因为它正在抓取第 0 个数组(第 0 节),然后抓取与所选索引路径相关的正确行。

    【讨论】:

      猜你喜欢
      • 2014-07-09
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多