Ios TableView单元格未更新
我试图根据结构的bool属性更新自定义单元格中的标签,但是它似乎只更新一次 在数组中创建新对象时,我将其设置为false。当属性稍后设置为true时,单元格会相应更新。当我将其设置回false时,单元格不会改变。逻辑中的Print语句表明这两个条件都得到了正确的满足,所以我不明白为什么单元格不会“更改回”。 谢谢 按下更改布尔值的按钮:(sender.tag来自另一个tableView,但工作正常)Ios TableView单元格未更新,ios,swift,uitableview,Ios,Swift,Uitableview,我试图根据结构的bool属性更新自定义单元格中的标签,但是它似乎只更新一次 在数组中创建新对象时,我将其设置为false。当属性稍后设置为true时,单元格会相应更新。当我将其设置回false时,单元格不会改变。逻辑中的Print语句表明这两个条件都得到了正确的满足,所以我不明白为什么单元格不会“更改回”。 谢谢 按下更改布尔值的按钮:(sender.tag来自另一个tableView,但工作正常) 细胞被重复使用。如果isActive为false,则不会对单元格执行任何操作,因此单元格将保留其
细胞被重复使用。如果
isActive
为false,则不会对单元格执行任何操作,因此单元格将保留其以前的值。此外,不需要重新加载整个tableview;您最好只是重新加载受影响的行。您可以使用.toggle
切换布尔值。如果单元格被重新排序,使用标记
属性也会导致问题。@Paulw11;谢谢你的意见。如果是假的话,最好的办法是什么?如果是假的话,你想要什么?一个空白的mealName
-根本没有单元格?不清楚你想要的行为是什么,根本没有细胞。我以前使用两个数组构建了这个概念,一个是“活动”数组,另一个是“潜在”数组,而讨论中的mealTableView只需填充“活动”数组即可。然而,事实证明它太麻烦了,所以我尝试让这个bool属性方法工作。因此,如果bool是真的,食物在细胞中被看到,如果是假的,它就不会出现;您将始终拥有numberOfRows
返回的行数。您可以清除名称文本,但不能基于值为false
struct Meal: Codable {
var name: String
var arrayOfDishes: [Dish]
}
struct Dish: Codable {
var name: String
var isActive: Bool
var arrayOfSteps: [Step]
}
//inside cellForRowAt (I have multiple tableViews within one VC)
case mealTableView:
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomMealCell", for: indexPath)
as! MealTableViewCell
if meal.arrayOfDishes.isEmpty {
cell.mealName.text = ""
return cell
} else {
if meal.arrayOfDishes[indexPath.row].isActive == true {
cell.mealName.text = meal.arrayOfDishes[indexPath.row].name
return cell
} else if meal.arrayOfDishes[indexPath.row].isActive == false {
return cell
}
return cell
}
@objc func onClickedDishBtn(sender: UIButton) {
if meal.arrayOfDishes[sender.tag].isActive == false {
meal.arrayOfDishes[sender.tag].isActive = true
} else if meal.arrayOfDishes[sender.tag].isActive == true {
meal.arrayOfDishes[sender.tag].isActive = false
}
mealTableView.reloadData()