gpt4 book ai didi

swift - 在表格 View 中选择多行并勾选所选的行

转载 作者:IT王子 更新时间:2023-10-29 05:11:32 25 4
gpt4 key购买 nike

我正在从 plist 文件加载一个 tableView。这没有问题。我只是想“勾选”选定的行。目前,我的代码没有按预期工作。目前,它看起来如下:

  • 点击第 1 行(它将勾选第 1 行 = 好)
  • 再次点击第 1 行(没有任何反应 = 不好。我希望此处该行未被选中)再次点击第 1 行时,它会取消勾选。第二次点击后。
  • 当我在 tableview 的初始加载时点击第 0 行时,它永远不会勾选该行

我的代码:

class portals: UITableViewController {

var lastSelectedIndexPath = NSIndexPath(forRow: -1, inSection: 0)

...

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as! UITableViewCell

// Configure the cell...
cell.textLabel!.text = portals[indexPath.row]

return cell
}


// Check which portal is selected
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

var whichPortalIsSelected: String = ""

// Get Cell Label
let indexPath = tableView.indexPathForSelectedRow();

// Tick the selected row
if indexPath!.row != lastSelectedIndexPath?.row {

let newCell = tableView.cellForRowAtIndexPath(indexPath!)
newCell?.accessoryType = .Checkmark

lastSelectedIndexPath = indexPath

whichPortalIsSelected = newCell!.textLabel!.text!
println("You selected cell #\(lastSelectedIndexPath.row)!") //PPP
println("You selected portal #\(whichPortalIsSelected)!") //PPP

// Un-Tick unselected row
} else {
let newCell = tableView.cellForRowAtIndexPath(indexPath!)
newCell?.accessoryType = .None

whichPortalIsSelected = newCell!.textLabel!.text!
println("You unselected cell #\(indexPath!.row)!") //PPP
println("You unselected portal #\(whichPortalIsSelected)!") //PPP
}

}
}

最佳答案

swift 4

首先,让你的tableView支持多选:

self.tableView.allowsMultipleSelection = true
self.tableView.allowsMultipleSelectionDuringEditing = true

然后像这样简单地继承 UITableViewCell :

class CheckableTableViewCell: UITableViewCell {
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
self.selectionStyle = .none
}

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}

override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
self.accessoryType = selected ? .checkmark : .none
}
}

最后,在您的 cellForRowAt indexPath 中使用它:

let cell = tableView.dequeueReusableCell(withIdentifier: "cell", 
for: indexPath) as? CheckableTableViewCell

如果必须这样做,请不要忘记在 xib/storyboard 中子类化您的原型(prototype)单元: enter image description here

关于swift - 在表格 View 中选择多行并勾选所选的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30516451/

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