当用户选择它然后被推送到详细视图时,我有一个 uitableview 单元格突出显示。我希望当它们返回表格视图视图控制器时单元格不被突出显示。
我将如何实现这一目标?
我 [cell.textLabel setHighlighted:NO];
在 viewWillAppear 中猜测,但如果我把它放在那里,则单元格是未声明的。
谢谢你的帮助
当用户选择它然后被推送到详细视图时,我有一个 uitableview 单元格突出显示。我希望当它们返回表格视图视图控制器时单元格不被突出显示。
我将如何实现这一目标?
我 [cell.textLabel setHighlighted:NO];
在 viewWillAppear 中猜测,但如果我把它放在那里,则单元格是未声明的。
谢谢你的帮助
如果您使用UITableViewController
子类,那么只需设置属性
self.clearsSelectionOnViewWillAppear = YES;
否则viewWillAppear
只是打电话
NSIndexPath *indexPath = self.tableView.indexPathForSelectedRow;
if (indexPath) {
[self.tableView deselectRowAtIndexPath:indexPath animated:animated];
}
// MARK: - Swift 3
if let indexPath = tableView.indexPathForSelectedRow {
tableView.deselectRow(at: indexPath, animated: true)
}
斯威夫特 3.0
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if let selectionIndexPath = self.tableView.indexPathForSelectedRow {
self.tableView.deselectRow(at: selectionIndexPath, animated: animated)
}
}
尝试
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Deselect the row which was tapped
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
我决定将此作为答案而不是评论。
如果您使用的是故事板:单击您的 UITableViewController -> 选中“选择:外观上清除”框
func clearOnAppearance() {
for indexPath in tableView.indexPathsForSelectedRows ?? [] {
tableView.deselectRow(at: indexPath, animated: true)
}
}
或者一些不雅的方式=)
NSArray *arrayWithPaths = [tableView indexPathsForVisibleRows];
for (NSIndexPath *path in arrayWithPaths)
{
[tableview deselectRowAtIndexPath:path animated:NO];
}