gpt4 book ai didi

ios - didSelectRowAtIndexPath 中的 uitableViewCellaccessorytype 问题

转载 作者:行者123 更新时间:2023-11-29 01:37:31 25 4
gpt4 key购买 nike

我有一个包含人员列表的 tableView。我想选择多个单元格。我创建了一个字典来存储选定的单元格 ( screenshot )。

var checkedSubjects: [Person: Bool] = [Person: Bool]()

然后,当我选择一个单元格时,它会在该单元格附近显示一个复选标记并将其保存在我的数组中 ( screenshot )。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell: SearchTableViewCell = tableView.dequeueReusableCellWithIdentifier("CELL", forIndexPath: indexPath) as! SearchTableViewCell
cell.tintColor = UIColor(hex: 0x3f51b5)
cell.subjectNameLabel.text = subjects[indexPath.row].name
cell.subjectDescriptionLabel.text = "(\(subjects[indexPath.row].type))"

let person = Person(id: subjects[indexPath.row].id, name: subjects[indexPath.row].name, type: subjects[indexPath.row].type)
if checkedSubjects[person] != nil {
cell.accessoryType = checkedSubjects[person]! ? .Checkmark : .None
}
return cell
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: false)
let index = indexPath.row
let person = Person(id: subjects[index].id, name: subjects[index].name, type: subjects[index].type)
if tableView.cellForRowAtIndexPath(indexPath)!.accessoryType == .Checkmark {
tableView.cellForRowAtIndexPath(indexPath)!.accessoryType = .None
checkedSubjects[person] = false
counter--
} else {
tableView.cellForRowAtIndexPath(indexPath)!.accessoryType = .Checkmark
checkedSubjects[person] = true
counter++
}
if counter > 0 {
saveBtn.enabled = true
let text = counter == 1 ? "Add \(counter) person" : "Add \(counter) persons"
saveBtn.setTitle(text, forState: UIControlState.Normal)
} else {
saveBtn.enabled = false
saveBtn.setTitle("Choose persons", forState: UIControlState.Normal)
}
}

但是当我再次按下该单元格时,我希望它返回默认 View 。它删除复选标记,但文本不占用空白空间 ( screenshot )。标签的尾随约束设置为容器边距。

我尝试在 didSelectRowAtIndexPath 中对 tableView 进行 reloadData() 但没有帮助。

有什么想法可以解决这个问题吗?

最佳答案

我认为这里的问题是您试图在您的 didSelectRow 实现中操纵物理单元格。这是错误的处理方式。不要尝试更改甚至读取 didSelectRow 实现中单元格的附件类型!相反,完全在模型 (checkedSubjects) 上操作并重新加载受影响的行,以便 View 获取对模型的更改(因为 cellForRow 将被调用)。

关于ios - didSelectRowAtIndexPath 中的 uitableViewCellaccessorytype 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32810317/

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