Domanda

Ho un UITabBar controller di gestione dei vari controllori (utilizzando il SDK 3.0).Uno di questi è una tableView controller e ho bisogno di fornire una funzione di ricerca tramite il UISearchDisplayController.A tutti il mio codice è basato su Apple TableSearch esempio.Tuttavia, quando si fa clic sulla scheda tableView controller verrà visualizzata che mostra il suo contenuto correlato, ma non viene visualizzata la barra di ricerca.Ho verificato che il xib in IB per assicurarsi che tutte le prese sono impostati correttamente, ma non importa quello che cerco io.searchDisplayController è sempre nullo e la barra di ricerca non viene visualizzato.

In pratica ho replicato MainView.xib dal TableSearch esempio e impostare il proprietario del file di classe per la corretta classe controller della scheda.Le prese sono imposta come nell'esempio MainView.xib.Mi manca qualche passaggio importante o facendo qualcosa di sbagliato?

Vi ringrazio in anticipo.

È stato utile?

Soluzione 3

Ok, ho trovato come risolverlo. Nel mio caso, il problema era dovuto al fatto che stavo usando un controller integrato all'interno del UITabBarController come una delle sue schede gestite (vale a dire come un bambino).

Rimozione del controller dalla UITabBarController, quindi l'aggiunta di un UINavigationController al UITabBarController invece, e, infine, mettere il mio controller come un figlio del UINavigationController risolto completamente il problema.

Non capisco perché è così (non ci sono informazioni relative alla documentazione, come spesso accade); tuttavia, ora funziona come un fascino. Cordiali saluti.

Altri suggerimenti

Ho avuto lo stesso problema e capitato di inciampare su questa soluzione ...

Se avete il vostro table view controller (es. UISearchDisplayController) annidati nella Barra dei Tab o controller di Navigazione tramite Interface Builder, è necessario impostare il "Pennino Nome" in "ispeziono" finestra.

Il Pennino nome sarà quello che contiene la tabella vista e ha il controller (es. UISearchDisplayController) come il Proprietario del File.

Anch'io ho questo problema :( è la barra di ricerca sempre nascosto dietro il Tableview?

@unforgiven, hai provato questa ...?

searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, 320, 40)]; 
[self.tableView setTableHeaderView: searchBar];

Questo crea manualmente una barra di ricerca e funziona. Ma sto facendo un po 'stupido errore nella IB che la SearchBar non si presenta, anche se i miei collegamenti sono perfetti. : - (

Fare aggiornare questo post se si ottiene la risposta ...

Ho avuto un problema simile

Per risolvere ho dovuto fare un passo ulteriore alla risposta unforgivens Nel mio pennino principale

1) creare un UITabController 2) Poi ho trascinato un controllore UINavigational nel controllore scheda 3) Poi trascinato fuori un'UITableViewController nella NavigationalController come un bambino 4) Poi cambiato (3) classe di essere il mio MyTableWithSearchBarViewController nella finestra di ispezione - controllare se il nome pennino è corretto e cambiare questo, se necessario, nella finestra di ispezione nonché 5) Poi ho dovuto cancellare il tableView che viene automaticamente creato da IB nel passo (3). Solo allora la barra di ricerca spettacolo correttamente ...

Se nella fase 3 Ho trascinato fuori un controller diverso sul palco o lasciato l'tableView ci sarebbe sempre e solo visualizzare la tabella e non la barra di ricerca

strano

Tomtrapeze ha la risposta giusta se il file contiene il pennino UITableViewController. Ma, se si sta caricando l'UITableViewController nel codice - come ad esempio spingendo sulla pila di un UINavigationController - la soluzione è un po 'diverso.

Quando l'inizializzazione del UITableViewController o sottoclasse, è necessario utilizzare il -initWithNibName: bundle: forma di inizializzazione e specificare il nome del file del pennino. In alternativa, è possibile utilizzare il -initWithStyle di serie:. Initializer e impostare manualmente la proprietà nibName prima che la vista è caricato

Se la proprietà nibName non è impostata quando la vista viene caricato, UITableViewController non userà la logica di ricerca UIViewController pennino normale. Sarà basta caricare invece un UITableView standard.

Di recente ho appreso che avrei potuto caricare i file NIB con [[MyViewController alloc] initWithNibName:nil bundle:nil]; quando il file NIB ha lo stesso nome della classe (vale a dire MyViewController.xib). Si scopre che l'inizializzazione in questo modo fa sì che il 'UISearchBarandUISearchBarDisplayController` di non visualizzare. Quando ho inizializzato il controller della vista dalla realtà digitando il nome della classe, la mia barra di ricerca ha mostrato correttamente. Inizialmente ho pensato che avesse qualcosa a che fare con come stavo presentando il controller della vista, ma era contento che non era.

PGWSearchViewController *searchVC = [[PGWSearchViewController alloc] initWithNibName:@"PGWSearchViewController" bundle:nil];

searchVC.modalPresentationStyle = UIModalPresentationFullScreen;
searchVC.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

[self presentViewController:searchVC animated:YES completion:^{ }];

Questo sta utilizzando iOS SDK 5.1 e XCode 4.3.1.

Un'altra possibile soluzione che funziona per me è quello di inizializzare l'UITableViewController con initWithnibName: bundle:

SearchEntryTableViewController* searchEntryTableViewController = [[SearchEntryTableViewController alloc]initWithNibName:@"SearchEntryTableViewController" bundle:nil];

Per il nido UITableViewController in un UINavigationController prima di metterlo in un UITabBarController non risolve il problema per me ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top