2011-12-07 3 views
14

J'ai utilisé Xcode 4.2 pour créer une application iOS basée sur storyboard. Un de mes écrans contient un UITableViewController, utilisant des cellules personnalisées dynamiques.Utilisation d'un UITableViewCell personnalisé dynamique dans XCode 4.2, avec Storyboards et UISeachDisplayController

Jusqu'ici - tout va bien.

Maintenant, je voulais ajouter un UISearchDisplayController pour permettre le filtrage de ma liste.

Pour une raison quelconque, le UISearchDisplayController ne sera pas afficher mes cellules personnalisées, et je ne peux pas trouver un moyen de forcer ...

C'est ce que ma méthode de cellForRowAtIndexPath ressemble:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *CellIdentifier = @"QueueListCell"; 
    QueueListTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[QueueListTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
              reuseIdentifier:CellIdentifier]; 
    } 
    assert(cell); 

    if ([tableView isEqual:self.searchDisplayController.searchResultsTableView]) { 
     indexPath = [_indexPathsForSearchResults objectAtIndex:indexPath.row]; 
    } 

    // Set up the cell... 
    NSDictionary* itemDict = [_ListItems objectAtIndex:indexPath.row]; 

    cell.labelQueueName.text = [itemDict objectForKey:kQueueName]; 
    cell.labelQueueNumItems.text = [[itemDict objectForKey:kQueueNumItems] stringValue]; 

    return cell;  
} 

Des idées sur comment faire fonctionner cela? Je veux dire, ma table UISearchDisplayController affiche le bon nombre de résultats (je sais que puisque je peux cliquer dessus, et j'ai ajouté un NSLog pour me faire savoir ce que je clique sur ...)

Ceci est mon Voir la table This is my table view

Voici comment la table d'affichage de recherche ressemble ... This is how the search display table looks like...

Mon problème/question est de savoir comment rendre la vue table UISearchDisplayController montrer mes cellules personnalisées?

Toute aide appréciée ...

Reuven

+0

Vous pouvez toujours vérifier la différence en utilisant la comparaison de référence de tableView. –

+0

note mon problème est que, pour une raison quelconque, searchResultsTableView n'affiche pas mes cellules client. C'est ce que j'essaie de résoudre (voir les images que j'ai ajoutées au post) – Reuven

Répondre

27

réponse spécifique à interroger

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
} 

Par exemple complet, ont le sample code from apple's site.

Step by step illustration

+2

Spark, vous êtes mon héros! :-) donc, tellement, tellement frustrant. Pourtant, si tellement simple et élégant à réparer! MERCI! – Reuven

+1

Merci! J'ai lutté avec ça pendant des heures. –

+1

alors quel était le problème? – ladookie