J'ai un contrôleur Uitabbar gérant plusieurs contrôleurs (à l'aide de SDK 3.0). L'un d'entre eux est un contrôleur de tableView et j'ai besoin de fournir une capacité de recherche à l'aide de l'UISEarchDisplayController. Tout mon code est basé sur l'exemple Apple TableRearch. Toutefois, lorsque vous cliquez sur l'onglet, le contrôleur de TableView apparaît indiquant son contenu associé, mais aucune barre de recherche n'apparaît. J'ai vérifié le XIB dans IB pour vous assurer que tous les points de vente sont correctement définis, mais peu importe ce que j'essaye Self.SearchDisplayController est toujours nul et la barre de recherche n'apparaît pas. P>
Dans la pratique, j'ai répliqué Mainview.xib à partir de l'exemple TableRearch et définissez la classe propriétaire du fichier dans la classe de contrôleur correcte de l'onglet. Les sorties sont définies comme dans l'exemple Mainview.xib. Suis-je rater une étape importante ou faire quelque chose de mal? P>
Merci d'avance. P>
7 Réponses :
Moi aussi j'ai ce problème :( est la barre de recherche se cachée derrière la tableView?
@unforgiven, Avez-vous essayé cela ...? p>
searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, 320, 40)]; [self.tableView setTableHeaderView: searchBar];
OK, j'ai trouvé comment le résoudre. Dans mon cas, le problème était due au fait que j'utilisais un contrôleur intégré au sein de l'UitabbarController comme l'un de ses onglets gérés (c'est-à-dire en tant qu'enfant). P>
Retrait du contrôleur de l'UITABBARCONTROLLER, puis ajoutez une uoinavigationController à l'UITABBARController à la place et enfin de mettre mon contrôleur comme un enfant de l'uinavigationController résolu complètement le problème. P>
Je ne comprends pas pourquoi cela est donc (il n'y a pas d'informations connexes dans la documentation, comme cela se produit souvent); Cependant, cela fonctionne maintenant comme un charme. Avec des salaires gentilles. P>
Cela fonctionne toujours à partir de novembre 2017. Il y a un bon diagramme montrant comment ajouter l'uoinavigationController à la page Onglet ici .
J'ai eu un problème similaire p>
Pour résoudre, je devais faire une étape supplémentaire pour répondre aux références Dans ma nib principale p>
1) Créer un uitabcontroller 2) Ensuite, j'ai traîné un contrôleur uinavigational dans le contrôleur de tabulation 3) Ensuite, a entraîné une maîtrise de l'UribleView dans la conte de navigation comme un enfant 4) puis changé (3) la classe pour être mon myTableWithSearchBarViewController dans l'inspecteur - Vérifiez si le nom de la NIB est correct et modifiez ceci si nécessaire dans l'inspecteur également. 5) J'ai ensuite dû supprimer la vision de la TableView qui est automatiquement créée par IB à l'étape (3). Ce n'est qu'alors que la barre de recherche sera correctement ... p>
Si à l'étape 3, j'ai traîné un contrôleur différent sur la scène ou laissé la tableView là-bas, il ne présenterait jamais la table et non la barre de recherche p>
bizarre p>
J'ai eu le même problème et je trébuche sur cette solution ... p>
Si vous avez votre contrôleur de vue de table (par exemple, Le nom de la NIB sera celui qui détient la vue de la table et dispose du contrôleur (par exemple, UisearchDisplayController code>) imbriqué dans une barre d'onglets ou un contrôleur de navigation à l'aide de l'interface Builder, vous devez définir le "NOM DE NIB" dans la fenêtre "Attributs Inspector" . P>
UisearchDisplayController code>) en tant que propriétaire du fichier. p>
Tomtrapeze a la bonne réponse si votre fichier NIB contient l'UitailViewController. Mais, si vous chargez l'utableviewController dans le code - comme la poussant sur la pile d'une commande UinavigationController - la solution est un peu différente. p>
Lors de l'initialisation de l'UitailViewController ou de la sous-classe, vous devez utiliser le fichier -Ilitwithnibname: Bundle: Formulaire d'initialisateur et spécifiez le nom de votre fichier NIB. Alternativement, vous pouvez utiliser la standard -Ilitwithstyle: initialiseur et définir manuellement la propriété NibName avant que la vue ne soit chargée. P>
Si la propriété NibName n'est pas définie lorsque la vue est chargée, UitablesViewController n'utilisera pas la logique de recherche NIVIEWStroller normale. Il suffira de charger une valorisation standard d'entretien. P>
Un autre correctif possible qui fonctionne pour moi est d'introduire l'UitailViewController avec initwithnibname: Bundle:
SearchEntryTableViewController* searchEntryTableViewController = [[SearchEntryTableViewController alloc]initWithNibName:@"SearchEntryTableViewController" bundle:nil];
J'ai récemment appris que je pouvais charger des fichiers NIB avec [[[MyViewController Alloc] initwithnibname: Nil Bundle: nil]; code> lorsque le fichier NIB a le même nom que la classe (c.-à-d.
MyViewController .xib code>). Il s'avère que l'initialisation de cette manière provoque la «Barre Uisearch
et Code> UisearchBardisplayController» pour ne pas afficher. Lorsque j'ai initialisé le contrôleur d'affichage en tapant en réalité le nom de la classe, ma barre de recherche est arrivée correctement. J'ai initialement pensé que cela avait quelque chose à voir avec la façon dont je présentais le contrôleur d'affichage, mais j'étais heureux que ce n'ait pas.
PGWSearchViewController *searchVC = [[PGWSearchViewController alloc] initWithNibName:@"PGWSearchViewController" bundle:nil];
searchVC.modalPresentationStyle = UIModalPresentationFullScreen;
searchVC.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:searchVC animated:YES completion:^{ }];
Oui, les choses sont bien meilleures maintenant, avec SDK 5.1.