SORU
10 Mayıs 2010, PAZARTESİ


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
10 Mayıs 2010, PAZARTESİ


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Amazon Web Services

    Amazon Web S

    8 NİSAN 2009
  • Harvest: Greg Laurie

    Harvest: Gre

    6 HAZİRAN 2006
  • Philip DeFranco

    Philip DeFra

    16 EYLÜL 2006