[英]UITableViewCell does not hold the state of custom button
我已經閱讀了類似的問題,但我無法解決它。 我有一個tableview,它有一個自定義單元格,帶有一個按鈕來添加和刪除一個類。 我創建了一個自定義委托來保存和刪除類,並更改按鈕的狀態。 更改按鈕的狀態工作正常,但是當我滾動按鈕時不保持狀態(我猜是因為我正在將單元格出列)
在我的單元格索引路徑行我嘗試檢查以更改按鈕的狀態:
let isInSchedule = self.isClassScheduled(classAttend, from: self.classesInSchedule!)
if isInSchedule == true {
cell.addRemoveButton.selected = true
} else {
cell.addRemoveButton.selected = false
}
這是我的委托方法,我保存或刪除該類
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
}
}
}
它會改變按鈕狀態,但是當我開始向上或向下滾動時,按鈕不會保持狀態(我知道可能是因為我正在修改我的單元格,所以它正在使用它可用的任何單元格。任何幫助都很大贊賞。
另外,我的故事板中的視圖控制器中有我的單元格。 為什么如果我做cell = PresentationCell()我的單元格中的所有視圖都是零? 我只是試圖不重復使用單元格作為我的最后一個解決方案。
可重復使用的表格視圖單元格不保持狀態,以便保持按鈕保持狀態,當單元格出現在屏幕上時,您必須根據條件進行另一次檢查。 我的建議是實施
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() {
}
我希望這會有所幫助。
你應該做兩件事
解決方案來自@Michael“你需要的任何狀態必須保持在單元格之外”因為tableView重用已經創建的單元格我必須向類添加屬性我填充了tableview(我使用了bool但是它可以是任何東西)並基於該屬性我在方法cellForRowAtIndexPath中設置按鈕的狀態。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.