gpt4 book ai didi

ios - UITableView 复选标记配件

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

我有一个 UITableView,我想为选定的单元格或数组中包含 cell.textLabel.text 的单元格添加复选标记。如果数组计数为 0,第一个单元格应该有一个复选标记(有效,但其他单元格是随机选择的)否则向包含数组的 textlabel.text 的单元格添加一个复选标记,也有效,但在滚动时随机单元格被选中。 (我已经向我的 UITableView 添加了多项选择)。我该如何解决这个问题?

cellForRowAtIndexPath

func tableView(tableView: UITableView,
cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
cell.textLabel!.text = settings_categories[indexPath.row]
if (userData[0].settings_categories.count == 0 && indexPath.row == 0){
cell.accessoryType = UITableViewCellAccessoryType.Checkmark
}
else{
if (userData[0].settings_categories.contains(settings_categories[indexPath.row])){
cell.accessoryType = UITableViewCellAccessoryType.Checkmark
}
}
if (cell.selected){
cell.selected = false
if (cell.accessoryType == UITableViewCellAccessoryType.None){
cell.accessoryType = UITableViewCellAccessoryType.Checkmark
}
else
{
cell.accessoryType = UITableViewCellAccessoryType.None
}
}
return cell;
}

didSelectRowAtIndexPath

 func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
NSLog("You selected cell number: \(indexPath.row)!")
let cell = tableView.cellForRowAtIndexPath(indexPath)
if cell!.selected
{
cell!.selected = false
if cell!.accessoryType == UITableViewCellAccessoryType.None
{
//Add to array
userData[0].settings_categories.append((cell?.textLabel?.text)!)
cell!.accessoryType = UITableViewCellAccessoryType.Checkmark
print(userData[0].settings_categories)
}
else
{
var counter = 0;
for index in userData[0].settings_categories {
if index == cell?.textLabel?.text {
userData[0].settings_categories.removeAtIndex(counter)
print(userData[0].settings_categories)
}
counter++
}
cell!.accessoryType = UITableViewCellAccessoryType.None
}
}

}

最佳答案

只需在单元格初始化后再添加一件事 cell.accessoryType = UITableViewCellAccessoryType.None 因为在 tableview 中它的重用优先单元格所以如果单元格已经检查(因为它重用已检查的单元格)那么它默认已检查完毕,因此更新后您的代码将是

func tableView(tableView: UITableView,
cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
cell.textLabel!.text = settings_categories[indexPath.row]
cell.accessoryType = UITableViewCellAccessoryType.None// new added line
if (userData[0].settings_categories.count == 0 && indexPath.row == 0){
cell.accessoryType = UITableViewCellAccessoryType.Checkmark
// cell.selected = true
}
else{
if (userData[0].settings_categories.contains(settings_categories[indexPath.row])){
cell.accessoryType = UITableViewCellAccessoryType.Checkmark
// cell.selected = true
}
}
if (cell.selected){
cell.selected = false
if (cell.accessoryType == UITableViewCellAccessoryType.None){
cell.accessoryType = UITableViewCellAccessoryType.Checkmark
}
else
{
cell.accessoryType = UITableViewCellAccessoryType.None
}
}
return cell;
}

关于ios - UITableView 复选标记配件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34604932/

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