点击时突出显示表格视图单元格,按下警报控制器操作按钮时取消突出显示
Highlight tableview cell when tapped and unhighlight when alert controller action buttons are pressed
我喜欢在用户触摸 blue
中的单元格时突出显示 tableview 单元格中的行,然后当用户选择操作按钮时,我希望将其更改为 gray
颜色
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
var newCell = tableView.cellForRow(at: indexPath)!
newCell.backgroundColor = UIColor.blue
let alertController = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
let okButton = UIAlertAction(title: "Ok", style: .default, handler: { (action) -> Void in
print("Ok button tapped")
var newCell = tableView.cellForRow(at: indexPath)!
newCell.backgroundColor = UIColor.gray
})
let cancelButton = UIAlertAction(title: "Cancel", style: .cancel, handler: { (action) -> Void in
print("Cancel button tapped")
var newCell = tableView.cellForRow(at: indexPath)!
newCell.backgroundColor = UIColor.gray
})
alertController.addAction(okButton)
alertController.addAction(cancelButton)
present(alertController, animated: true, completion: nil)
}
func tableView(_ tableView: UITableView, didhighlightRowAt indexPath: IndexPath) {
var newCell = tableView.cellForRow(at: indexPath)!
newCell.backgroundColor = UIColor.clear
}
我这样做了,它以 white
颜色突出显示单元格,点击操作按钮后,它仍然保持 white
但是当我点击另一个单元格时,前一个单元格会转动并保持 gray
在视图控制器初始化中:
NSMutableSet *selectedRows = NSMutableSet.alloc.init;
NSIndexPath *lastSelected = nil;
在table视图初始化:
tableview.allowsMultipleSelection = false
在 select 行中:
火警(你已经有了),lastSelected = indexPath;
,[selectedRows addObject:indexPath.row]
。
在行的单元格中:
cell.selectionStyle = UITableViewSelectionStyleBlue;
if ([selectionSet contains:indexPath.row])
cell.backgroundColor = UIColor.grayColor;
else
cell.backgroundColor = UIColor.clearColor;
在警报视图委托中:
[tableview deselectRowAtIndexPath:selectedIndexPath]
和 [tableview reloadIndexPath:lastSelection]
这应该:
1) 从清除所有单元格开始
2) 默认高亮点击时单元格变为蓝色
3) 警报视图后重绘单元格 selection
4) 如果在selectedRow 集合
中,单元格将以灰色重绘
我喜欢在用户触摸 blue
中的单元格时突出显示 tableview 单元格中的行,然后当用户选择操作按钮时,我希望将其更改为 gray
颜色
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
var newCell = tableView.cellForRow(at: indexPath)!
newCell.backgroundColor = UIColor.blue
let alertController = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
let okButton = UIAlertAction(title: "Ok", style: .default, handler: { (action) -> Void in
print("Ok button tapped")
var newCell = tableView.cellForRow(at: indexPath)!
newCell.backgroundColor = UIColor.gray
})
let cancelButton = UIAlertAction(title: "Cancel", style: .cancel, handler: { (action) -> Void in
print("Cancel button tapped")
var newCell = tableView.cellForRow(at: indexPath)!
newCell.backgroundColor = UIColor.gray
})
alertController.addAction(okButton)
alertController.addAction(cancelButton)
present(alertController, animated: true, completion: nil)
}
func tableView(_ tableView: UITableView, didhighlightRowAt indexPath: IndexPath) {
var newCell = tableView.cellForRow(at: indexPath)!
newCell.backgroundColor = UIColor.clear
}
我这样做了,它以 white
颜色突出显示单元格,点击操作按钮后,它仍然保持 white
但是当我点击另一个单元格时,前一个单元格会转动并保持 gray
在视图控制器初始化中:
NSMutableSet *selectedRows = NSMutableSet.alloc.init;
NSIndexPath *lastSelected = nil;
在table视图初始化:
tableview.allowsMultipleSelection = false
在 select 行中:
火警(你已经有了),lastSelected = indexPath;
,[selectedRows addObject:indexPath.row]
。
在行的单元格中:
cell.selectionStyle = UITableViewSelectionStyleBlue;
if ([selectionSet contains:indexPath.row])
cell.backgroundColor = UIColor.grayColor;
else
cell.backgroundColor = UIColor.clearColor;
在警报视图委托中:
[tableview deselectRowAtIndexPath:selectedIndexPath]
和 [tableview reloadIndexPath:lastSelection]
这应该: 1) 从清除所有单元格开始
2) 默认高亮点击时单元格变为蓝色
3) 警报视图后重绘单元格 selection
4) 如果在selectedRow 集合
中,单元格将以灰色重绘