gpt4 book ai didi

ios - UITableViewCell 不保存自定义按钮的状态

转载 作者:搜寻专家 更新时间:2023-11-01 06:40:35 25 4
gpt4 key购买 nike

我已经阅读过类似的问题,但我无法解决。我有一个 tableview,它有一个自定义单元格,带有一个按钮来添加和删除一个类。我创建了一个自定义委托(delegate)来保存和删除类,并更改按钮的状态。更改按钮的状态工作正常,但是当我滚动按钮时,按钮不保持状态(我猜是因为我正在使单元格出队)

在我的索引路径行的单元格中,我尝试检查以更改按钮的状态:

let isInSchedule = self.isClassScheduled(classAttend, from: self.classesInSchedule!)
if isInSchedule == true {
cell.addRemoveButton.selected = true

} else {
cell.addRemoveButton.selected = false
}

这是我保存或删除类的委托(delegate)方法

 func indexOfClassSelectedWithButton(index: NSIndexPath, tableView:UITableView, and button: AddRemoveClass) {
if let currentlySavedClasses = ManagedObjectsController.sharedInstance.getAllScheduledClasses() as? [ClassScheduled] {
let classSelected = self.classes[index.section]
switch button.selected {
case true:
for classItem in currentlySavedClasses {
if classSelected.presentation?.title == classItem.presentation?.valueForKey("title") as? String {
ManagedObjectsController.sharedInstance.deleteScheduledClass(classItem)
button.selected = false
}
}
break
default:
if let classSelectedBreakout = classSelected.breakout?.valueForKey("breakoutID") as? String {
let canSave = self.isBreakoutAvailable(classSelectedBreakout, allClasses: currentlySavedClasses)
if canSave {
ManagedObjectsController.sharedInstance.createScheduledClass(from: classSelected)
button.selected = true
} else {
NSNotificationCenter.defaultCenter().postNotificationName(timeConlictNotication, object: nil)
}
}
break
}
}
}

它改变了按钮状态,但是当我开始向上或向下滚动时,按钮不保持状态(我知道可能是因为我正在修改我的单元格所以它正在占用任何可用的单元格。任何非常感谢帮助。

另外,我在 Storyboard的 View Controller 中有我的单元格。为什么如果我执行 cell = PresentationCell(),我的单元格中的所有 View 都是零?我只是试图不将单元格重新用作我的最后一个解决方案。

最佳答案

可重复使用的表格 View 单元格不会保持状态,因此要保持按钮保持状态,您必须根据您的条件再次检查单元格何时出现在屏幕上。我的建议是实现

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
if isInSchedule == true {
cell.addRemoveButton.selected = true

} else {
cell.addRemoveButton.selected = false
}

另一件事是通过在您的自定义单元格中实现“prepareForReuse”来记住单元格在使用前的重置状态。

override func prepareForReuse() {

}

希望对您有所帮助。

关于ios - UITableViewCell 不保存自定义按钮的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35905848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com