0

Je tire mes cheveux sur celui-ci. J'ai un NavigationController avec deux niveaux de TableViews. Chaque TableView est dans son propre fichier NIB. Le premier niveau affiche simplement une liste. Lors de la sélection d'une cellule, elle amène l'utilisateur à un second niveau TableView avec une liste plus détaillée. C'est sur ce second niveau TableView que je veux afficher une barre de recherche (en fait j'utilise aussi un SearchDisplayController). Je l'ai ajouté à TableView parce que je veux que le SearchBar fasse défiler avec la table.Le fichier NIB ne s'affiche pas à l'exécution

Ci-dessous, j'affiche deux captures d'écran. Le premier est la tableview de second niveau dans InterfaceBuidler. La seconde est la tableview de second niveau à l'exécution. Pour une raison quelconque, le SearchBar ne s'affiche pas au moment de l'exécution.

J'ai essayé de créer un tout nouveau projet à partir de zéro et les mêmes choses se produisent. Je ne comprends pas pourquoi le SearchBar ne s'affiche pas sur un NIB poussé sur le NavigationController. Avant de demander, si je mets le SearchBar sur le premier niveau TableView, il se montre très bien. Oui, je l'ajoute à TableView lui-même, donc c'est une partie de la vue qui devrait être affichée.

Aide! Qu'est-ce que je fais mal?

XIB File

C'est ce qui affiche réellement après la poussée ... est XIB

SearchBar Doesn't Display?

Répondre

1

D'accord, je vais devoir répondre à ma propre question. J'ai pensé à le supprimer, mais peut-être que cela pourrait aider quelqu'un d'autre. J'ai vraiment tiré mes cheveux sur celui-ci. Ce n'était pas à cause de tout ce que je faisais de mal, mais d'un malentendu fondamental sur le fonctionnement du développement de l'iPhone.

En un mot, le problème avec cette ligne de code, qui instancié TableViewController:

self.downloadDetailViewController = [[DownloadDetailTableViewController alloc] initWithStyle:UITableViewStyleGrouped]; 

Lorsque vous utilisez XCode pour créer une nouvelle classe, vous pouvez utiliser les éléments suivants:

" Ajouter -> Nouveau fichier -> Cocoa Touch Class -> sous-classe UIViewController -> UITableViewController sous-classe ET Avec XIB pour l'interface utilisateur "

Le problème est que la NIB n'a absolument rien à voir avec UITableViewCont rouleau jusqu'à ce que vous disiez à votre code de l'utiliser. Pour moi, cela ressemble à un bug dans XCode ou à tout le moins quelque chose qui est contre-intuitif. Lorsque l'environnement de développement crée tous les trois fichiers ensemble, il serait logique qu'ils travaillent ensemble, mais ils ne le font pas.

Au lieu de cela, la solution est de modifier la ligne de code comme suit:

self.downloadDetailViewController = [[DownloadDetailTableViewController alloc] initWithNibName:@"SecondaryView" bundle:[NSBundle mainBundle]]; 

Espérons que cela peut aider quelqu'un d'autre ...

0

Je pense que le problème est que vous ajoutez à la barre de recherche tableView, il est donc pas affichage. Essayez d'ajouter cette barre de recherche sans ajouter à la vue de la table, cela signifie déplacer la vue de la table vers le bas et ajouter la barre de recherche à la vue (pas la vue de table).

+0

Merci, mais cela ne fait pas vraiment ce que je veux. Je veux que ScrollBar fasse défiler avec le TableView. J'ai testé cela et si le TableView est la vue primaire pour le NavigationController, il se montre bien et défile avec la Table. Mais pour une raison quelconque, la même configuration sur un TableView qui est ensuite poussée sur la vue avec le NavigationController n'affiche pas le SearchBar. – jschmidt

0

Vous pouvez également définir la propriété Nib Name sur votre View View Controller sous le contrôleur de barre d'onglets, en fait cela et couplé avec le réglage de la classe avec votre nom de classe créera automatiquement la vue pour vous et vous ne devez pas manuellement créez-le.

Questions connexes