ユーザーが選択したときに詳細ビューにプッシュされたときに、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)
}
Swift 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];
}