如何同时获取indexPath.row和indexPath.section

时间:2017-10-16 10:10:46

标签: ios swift uitableview core-data

每当用户在新部分中输入内容时,前一部分的indexpath.row将替换为该部分的新行。我会举个例子来更好地理解我想说的话:

我有这样的桌面视图:

第1节:

  1. 用户输入#1
  2. 用户输入#2
  3. 现在用户创建了一个新的部分。 (第2节)。当他为第2节输入一行时,tableview变为

    第1节:

    1. 用户输入#3
    2. 用户输入#2
    3. 第2节:

      1. 用户输入#3
      2. 用户再次添加另一个输入:

        第1节:

        1. 用户输入#3
        2. 用户输入#4
        3. 第2节:

          1. 用户输入#3
          2. 用户输入#4
          3. 因此前面部分的行将被新行替换。我找到了所有这些来自哪里,但我不知道如何解决它。问题来自这行代码:

                func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
                guard let cell = tableView.dequeueReusableCell(withIdentifier: "expenseCell") as? ExpenseCell else { return UITableViewCell() }
                let budget = userBudget[indexPath.row] // <- This
                cell.delegate = self
                cell.configureCell(budget: budget)
                return cell
            }
            

            因为只给出了indexPath.row,而不是indexPath.section。我的问题是,如何为indexPath.section和indexPath.row添加单元格?

            我尝试修改let budget = userBudget[indexPath.row] 使用let budget = userBudget[indexPath.section][indexPath.row] ,但它说Type 'Budget' has no subscript members

              

            var userBudget:[Budget] = []

            Budget是CoreData实体

1 个答案:

答案 0 :(得分:0)

问题出在您的阵列中。您的数组必须是嵌套数组。

例如

var userBudget: [[Budget]] = []

更改你的cellForRowAt indexPath函数,如下所示:

let budget = userBudget[indexPath.section][indexPath.row]
cell.delegate = self
cell.configureCell(budget: budget)

注意:添加&#34;预算数组&#34;在userBudget而不是&#34;预算&#34;。 &#34;预算数组&#34;被描述为部分。

String of Array of String的简单示例:

var userBudget: [[String]] = [
                                ["Section 1 - User input #1","Section 1 - User input #2","Section 1 - User input #3"],  //Section 1 Inputs
                                ["Section 2 - User input #1","Section 2 - User input #2"],                              //Section 2 Inputs
                                ["Section 3 - User input #1","Section 3 - User input #2"]                               //Section 3 Inputs
                             ]