每当用户在新部分中输入内容时,前一部分的indexpath.row将替换为该部分的新行。我会举个例子来更好地理解我想说的话:
我有这样的桌面视图:
第1节:
现在用户创建了一个新的部分。 (第2节)。当他为第2节输入一行时,tableview变为
第1节:
第2节:
用户再次添加另一个输入:
第1节:
第2节:
因此前面部分的行将被新行替换。我找到了所有这些来自哪里,但我不知道如何解决它。问题来自这行代码:
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实体
答案 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
]