ros*_*ose 1 iphone uitableview tableviewcell ios
调用didSelectRowAtIndexPath,但未调用didDeselectRowAtIndexPath.我不是为什么.我在线搜索.很多类似的问题,但我找不到答案.
这是我的桌面视图
//tableView
let tempTableView = UITableView()
tempTableView.delegate = self
tempTableView.dataSource = self
tempTableView.translatesAutoresizingMaskIntoConstraints = false
self.view.addSubview(tempTableView)
self.tableView = tempTableView
Run Code Online (Sandbox Code Playgroud)
这是代表
//MARK: UITableViewDelegate
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.cayegoryArray[indexPath.row].isSelected = true
self.tableView?.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.None)
}
func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
self.cayegoryArray[indexPath.row].isSelected = false
self.tableView?.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.None)
}
Run Code Online (Sandbox Code Playgroud)
这是细胞.
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
self.selectionStyle = .Default
setInterface()
setLayout()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
Run Code Online (Sandbox Code Playgroud)
问题是由于self.tableView?.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.None)导致单元重新加载的事实 引起的,因此永远不会取消选择.
您可以通过self.tableView?.selectRowAtIndexPath(indexPath, animated: false, scrollPosition: .None)在重新加载单元格后添加来修复这些问题
即
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.cayegoryArray[indexPath.row].isSelected = true
self.tableView?.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.None)
self.tableView?.selectRowAtIndexPath(indexPath, animated: false, scrollPosition: .None)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1892 次 |
| 最近记录: |