我非常沮丧,因为它浪费了我很多时间。 我不知道为什么allowMultipleSelection在我的TableView中不起作用? 为了让它发挥作用,必须做些什么,我做了但仍然没有结果。 请查看我的代码,并请让我知道这个问题。
override func viewDidLoad()
{
super.viewDidLoad()
// Do any additional setup after loading the view.
self.participantsTableView.allowsMultipleSelection = true
}
if tableView == participantsTableView
{
var cell = tableView.cellForRowAtIndexPath(indexPath)!
if cell.accessoryType == UITableViewCellAccessoryType.Checkmark
{
cell.accessoryType = UITableViewCellAccessoryType.None
}
else
{
cell.accessoryType == UITableViewCellAccessoryType.Checkmark
}
self.participantsTableView.reloadData()
}
答案 0 :(得分:2)
您需要在tableView:didDeselectRowAtIndexPath:
中实现委托方法tableView:cellForRowAtIndexPath:
并更新单元格的accessoryType。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if let cell = tableView.cellForRowAtIndexPath(indexPath) {
cell.accessoryType = .Checkmark
}
}
func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
if let cell = tableView.cellForRowAtIndexPath(indexPath) {
cell.accessoryType = .None
}
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cellId", forIndexPath: indexPath) as UITableViewCell
cell.textLabel?.text = String(indexPath.row)
if let selectedPaths = tableView.indexPathsForSelectedRows() as? [NSIndexPath] {
let selected = selectedPaths.filter(){ $0 == indexPath }
if selected.count > 0 {
cell.accessoryType = .Checkmark
} else {
cell.accessoryType = .None
}
}
return cell
}