2012-05-31 22 views
6

Tüm bu Çekirdek Verileri, Storyboard'ları, UISearchBar üçlüsünü gerektiği gibi birlikte çalıştırarak bir zaman geçiriyorum. Nihayet başarılı bir şekilde tabloyu Core Data ile oluşturduktan sonra, öğeleri bir Arama Metniyle daraltınız ve prepareForSegue'i değiştirdik, hala bir hıçkırık var ...UISearchBar ile hazırForSpag ile indexPath.row sorununu giderme

Tablodaki herhangi bir öğeyi tıklatıp detay görünümüne gitmek için filtre uygulanmamış tabloda her şey yolunda. PrepareForSegue çağrılır ve ayrıntı mükemmel görünür.

Aradığım zaman, tablom filtrelenir (şu anda ikinci bir NSFetchedResultsController yerine filtrelenmiş dizi seçeneğine gidiyorum, ama denemekten değil!).

Filtrelenen listedeki bir öğeye tıkladığımda, prepareForSegue çağrılır ve ayrıntı görünümü itilir, ancak her zaman listedeki ilk öğeden ayrıntıları alır.

Örneğin, "c" için arama yaptım ve liste "Charlie" ve "Çerez" olarak daraltılırsa, "Charlie" yi seçtiğimde "Charlie" için ayrıntı görünümünü görüyorum. "Çerez" i seçtiğimde, maalesef, "Charlie"

için ayrıntı görünümünü de görüyorum, hazırlamamda ForForSegue kodunun sorun olduğu varsayımını yapıyorum (belki yanlış mı?). İşte kod:

SampleTVC *sampleDetailTVC = segue.destinationViewController; 
    sampleDetailTVC.delegate = self; 

    // Store selected Role in selectedRole property 
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
    // self.selectedRole = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
    if (savedSearchTerm){ 
     self.selectedRole = [self.searchResults objectAtIndex:indexPath.row]; 
    } else { 
     self.selectedRole = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
    } 
    NSLog(@"Passing selected role (%@) to SampleTVC", self.selectedRole.name); 
    sampleDetailTVC.role = self.selectedRole; 

Herhangi bir yardım için teşekkür ederiz! Phillip Mills

+0

siz "Cookie" seçeneğini giriş yapabilir

sadece basitçe eklemek zorunda Rolü aldığınız noktada self.searchResults' ve 'indexPath.row' değerleri? –

+0

Eklediğimde: if (savedSearchTerm) { self.selectedRole = [self.searchResults objectAtIndex: indexPath.row]; NSLog (@ "searchresults nedir:% @ indexpath nedir:% @", self.searchResults, indexPath.row); -------------------- Aşağıdakileri elde ediyorum: searchresults nedir: charlie, cookie [kısaltmak için düzenlenmiş] indexpath nedir: (null) ----- I index.path (null) sorunu olabileceğini düşünüyorum? –

+0

ve non-taranan tabloda, indexPath günlüğüne girersem şunu elde ederim: indexpath nedir: 2 indexes [0, 3] –

cevap

12

sayesinde cevap:

indexPath = [self.searchDisplayController.searchResultsTableView indexPathForSelectedRow]; 

tam örnek:

SampleTVC *sampleDetailTVC = segue.destinationViewController; 
    sampleDetailTVC.delegate = self; 
    // Store selected Role in selectedRole property 
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
    // self.selectedRole = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
    if (savedSearchTerm){ 
     indexPath = [self.searchDisplayController.searchResultsTableView indexPathForSelectedRow]; 
    self.selectedRole = [self.searchResults objectAtIndex:indexPath.row]; 
    } else { 
     self.selectedRole = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
    } 
    NSLog(@"Passing selected role (%@) to SampleTVC", self.selectedRole.name); 
    sampleDetailTVC.role = self.selectedRole; 
+0

Kendi cevabınızı kabul edebileceğinizi unutmayın. –

+0

Teşekkürler, bana 17 saat daha izin vermez ... :) –

İlgili konular