arrays - 与 NSindexpathforselectedrow 混淆

标签 arrays swift uitableview logic nsindexpath

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

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

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

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

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

例如,如果用户在第一个表格 View 中选择了 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 中的任何行,我就没有部分....当所有索引路径只是一行 # 时,我怎么能说 array2 部分是 = 到索引路径?

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

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

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

最佳答案

节号不反射(reflect)节数,它只是分配给它的一个 ID。所以对于 array1,section 是 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 节),然后获取与所选索引路径关联的正确行。

关于arrays - 与 NSindexpathforselectedrow 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36925833/

相关文章:

ios - UITableViewController 由于单元格标识符而崩溃

ios - 使用自动布局 (VFL) 增加自定义单元格按钮的高度

javascript - 删除对象 JS 中的节点

C 中的常量整数和数组初始化

javascript - 你能用 $parse 推送到 Angular 中动态声明的数组吗?

ios - Swift 3 中 IAP 的产品请求?

ios - 使用自动布局将屏幕分成 1/3 和 2/3 View

c - 调用 bsearch 时获取 "error: invalid initializer"

ios - MultipleSelectorRow 自定义

swift - NSInternalInconsistencyException',原因 : 'Could not load NIB in bundle while fetching 500+ records from the address book database