2013-08-24 19 views
9

Ho la sensazione che questo non dovrebbe darmi tanto fastidio quanto è e che mi manca qualcosa, ma proprio non riesco a sembrare farlo funzionare. Quindi voglio un TabBar che cambi tra 3 diverse TableViews. Tutti hanno bisogno di avere una barra di navigazione ma non un controllore di navigazione (poiché si svolge tutto dopo un passaggio modale iniziale nel TabBarController). l'esempio perfetto di ciò che sto cercando sono i segnalibri di Apple Maps.Come aggiungere NavigationBar (senza NavigationController) e SearchBar a TableView

ho provato tre metodi diversi ognuno dei quali non sono riusciti in diversi modi:

  1. Aggiungi un TableView, quindi aggiungere un NavBar a questo, quindi aggiungere il SearchBar. SearchBar sostituisce semplicemente il NavBar.
  2. Aggiungere una vista, quindi aggiungere la barra di navigazione a questo. Quindi aggiungere il TableView come subView. Quando aggiungo la SearchBar a questa subView finisce sotto la cella del prototipo (non ho provato a farlo perché dovrei scrivere un nuovo ViewController per gestire il fatto che TableView ora è una sottoview e non pensavo che valesse la pena ha appena dato i problemi di layout).
  3. Aggiungere una vista, quindi aggiungere una barra di navigazione a questo. quindi aggiungere un ContainerView che ha un TableViewController. Questo si blocca semplicemente in esecuzione. Non sono sicuro di quale sia l'errore, perché non sono proprio sicuro di dove rilevare eventuali eccezioni ...

Ho implementato la maggior parte della mia interfaccia nell'IB finora e vorrei mantenere in quel modo il più possibile, ma sono sicuro che ci deve essere qualcosa di ovvio che mi manca qui. Non sono mai stato programmato da iOS per molto tempo quindi andate piano con me se mi manca qualcosa di fondamentale! Qualsiasi aiuto sarebbe molto apprezzato. Anche se sta solo dicendo quale approccio di cui sopra dovrei andare e continuare a provare. Grazie!

Modifica

Probabilmente dovrei dire che quando ho detto TableViewController volevo dire una sottoclasse personalizzata di una TableViewController che utilizza un FetchedResultsController per popolare le cellule.

+0

aggiungi barra di navigazione xib e anche barra di ricerca aggiungi in xib. –

+0

Sfortunatamente finisco per ottenere lo stesso incidente sconosciuto che ho ricevuto con il numero 3. Non riesco a capire cosa sia anche con più punti di interruzione, tris e catches ecc. Il TableView si carica bene quando si accede a tabBarController tramite un push, è solo con passaggi modali mi sembra di avere questo problema. – GraemeArthur

risposta

2

È necessario aggiungere una barra di spostamento a un UIViewController (non un controller di visualizzazione tabella), quindi aggiungere la vista tabella e a tale vista tabella aggiungere una barra di ricerca e una cella. Ho provato questo, e funziona bene.

+0

Spiacente, ho modificato la domanda originale per dirlo, ma è una sottoclasse personalizzata di un TableViewController, quindi non so se questa soluzione mi sarà di grande aiuto. Ho lanciato un NavigationController con il TVC come root per il frattempo per farlo funzionare, ma è sbagliato! – GraemeArthur

+2

Questo potrebbe essere l'unico modo per farlo se si utilizza un TVC, perché qualsiasi vista aggiunta è stata aggiunta alla vista tabella. Se si desidera aggiungere viste al di fuori della vista tabella, è necessario utilizzare un UIViewController. – rdelmar

10

Se si desidera avere un passaggio modale a un nuovo controller di visualizzazione (o un controller di barra delle schede con schede che puntano ai controller di navigazione) e si desidera che il controller di visualizzazione disponga di una barra di spostamento, selezionare il controller di visualizzazione che si desidera presentare in modo modale, incorporarlo in un controller di navigazione (Editor-> Incorpora in-> Controller di navigazione), quindi passare modalmente al controller di navigazione. Lo stesso concetto vale per il controller della barra delle linguette, ad eccezione del fatto che saranno relazioni successive. image of modal segue with navigation bar

+0

Ottima risposta.Questa è una soluzione eccezionale per poter usare lo Storyboard. – dustinrwh

Problemi correlati