Seçilen UİtableViewCell seçildiğinde mavi kalıyor
Bir kullanıcı UİTableView bir satır seçili bir görünüm çevirdiğim zaman satır mavi bir vurgu alır, ve sonra yeni bir görünüm görünür. Sorun değil. Fakat ne zaman "geri" satır hala mavi vurgulanır. İşte didSelectRowAtİndexPath benim kod.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
SettingsViewController *controller = [[SettingsViewController alloc] initWithNibName:@"SettingsView" bundle:nil];
[[self navigationController] pushViewController:controller animated:YES];
[controller release], controller = nil;
}
Neyi yanlış yapıyorum?
CEVAP
Cevapları yukarıda işaret edildiği gibi, açıkça satırı devre dışı bırakmalısınız. Bu nasıl iki seçenek var. İlk, hemen seçimden sonra: satır seçimini kaldırmak için
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
...
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
Bu olacak iş gayet iyi, ama orada bir alternatif, ve bu yaklaşım kabul tarafından UITableViewController
olduğu için terk satır seçili o zaman kaldırın o zaman görünümü yeniden görüntülenir (sonra kumanda ediyorsun bastırıyor yerinden fırladı ve yığın).
Bu daha önce seçmişlerdi görmeleri döndüklerinde kullanıcı önceki seçim bir bakış görür hafif bir avantaja sahiptir.
Bunu uygulamak için, sadece viewWillAppear
geçersiz kılmak gerekir:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];
}
Dediğim gibi, bu'viewWillAppear:
s UITableViewController
. kullanıyorsanız bu yüzden yapıyor ^em>değilbu davranış görmek, sınıf viewDidAppear:
. super
uygulama Aramakta olduğunuz kontrol etmelisiniz
Güncelleme (30 Ekim 2013)çok popüler bir cevap! Ben haklı olarak yorum işaret ettiği gibi, UİTableViewController aslında viewWillAppear:
viewDidAppear:
- Bu doğru zamanlama değil bu. Buna ek olarak, bu davranış açık ve kapalı UİTableViewController clearsSelectionOnViewWillAppear
özelliğini kullanarak açın. Yukarıdaki cevabım bu yansıtacak şekilde iyileştirdim.
UİTableViewCell küme hücre seçildiğind...
Mavi arka plan seçimi önlemek için G/Ç...
Nasıl bir UİTableViewCell mavi vurgula...
Seçildiğinde bir UİTableViewCell yükse...
UİView backgroundColor UİTableViewCell...