Ho problemi a creare un UIView (in Interface Builder) che contiene un UITableView con qualche altro oggetto, come UIButton o UILabel. UITableView occupa sempre la massima quantità di spazio in UIView, indipendentemente dalle dimensioni dell'oggetto stesso di UITableView. Il proprietario del file è un UITableViewController standard.UITableView utilizza tutto lo spazio disponibile in Interface Builder
risposta
Ecco come farlo facilmente:
1) Creare un controller di visualizzazione tabella con xib.
2) Modificare il tipo ereditato nel file .h da UITableViewController, in UIViewController.
3) Aggiungere i protocolli UITableViewDataSource, UITableViewDelegate al file .h.
4) Aprire lo xib, aggiungere una vista.
5) trascinare la vista tabella nello xib sotto la vista, ridimensionare come desiderato.
6) Collegare la proprietà "view" del proprietario del file alla vista anziché a UITableView. L'origine dati e le proprietà delegate della vista tabella devono essere ancora collegate al proprietario del file.
7) (facoltativo) se si desidera essere in grado di ricaricare o accedere in altro modo alla tabella al di fuori dei metodi di delega del controller della vista tabella che passano in una vista tabella, creare un IBOutlet UITableView * denominato "myTable" o simile, e collegare il tavolo in IB a quello.
Un approccio alternativo è quello di fare una nuova UIViewController con XI ter, aggiungere una tabella alla XI ter, origine dati wire/delegato al proprietario del file, e fare una nuova classe UITableViewController che si usa per copiare i metodi da dentro il tuo controller di visualizzazione, quindi elimina.
Questo è il modo giusto per farlo.Dai documenti Apple: "Se la vista da gestire è una vista composita in cui una vista tabella è una delle subviews multiple, è necessario utilizzare una sottoclasse personalizzata di UIViewController per gestire la vista tabella (e altre viste). Non utilizzare un UITableViewController oggetto perché questa classe controller dimensiona la vista tabella per riempire lo schermo tra la barra di navigazione e la barra delle schede (se presente). " – bpapa
Anche un passaggio penso che sia necessario aggiungere Kendall: dovrà aggiungere esplicitamente tableView come proprietà della sua classe UIViewController e renderlo un IBOutlet. – bpapa
Kendall/bpapa - Grazie per il tuo aiuto. Usando le tue risposte combinate, sono stato in grado di risolvere il mio problema. Una cosa sull'ultimo commento di bpapa: dovevo creare una proprietà chiamata "tableView" nella mia classe UIViewController; tuttavia, sembrava funzionare anche se non lo avessi dichiarato come IBOutlet o collegato l'IBOutlet alla tabellaView stessa. Non ho ancora capito perché funziona ... :-) –
Sfortunatamente, la creazione di un UITableView in Interface Builder (IB) è stata molto problematica per me. Ho avuto gli stessi problemi di uno sviluppatore principiante e, dopo molte frustrazioni, ho finito per abbandonare IB per UITableViews.
La soluzione migliore per me era implementare UITableViewController (e UINavigationController che si utilizza come intestazione) a livello di programmazione. Una volta capito l'intero paradigma Model-View-Controller, è in realtà abbastanza semplice.
Alcune buone risorse per trattare con loro a livello di codice in cui si trovano la documentazione di Apple con questi nomi:
"Table View Guida alla programmazione per iPhone OS"
"Guida alla programmazione View Controller per iPhone OS"
Guarda la risposta di Kendall e il mio commento. Dal 3.0, Apple ha ripulito i documenti per spiegarlo meglio. Utilizzando questo approccio è ancora possibile fare visualizzazioni di tabelle in Interface Builder. – bpapa
Buono a sapersi, grazie. –
Cocoa with love ha un articolo su Recreating UITableViewController to increase code reuse. Ciò è utile se non è possibile utilizzare uno UITableViewController
, ma si desidera assicurarsi che lo UIViewController
si comporti allo stesso modo.
- 1. Fai un div a occupare tutto lo spazio verticale disponibile?
- 2. Come avere un controllo riempire tutto lo spazio disponibile
- 3. eredita file xib in Interface Builder
- 4. React flex box nativo che non utilizza tutto lo spazio disponibile
- 5. UIView `readableContentGuide` in Interface Builder?
- 6. Come posso espandere UITableView per riempire lo schermo intero su iPhone 5 usando Interface Builder?
- 7. Oggetti segnaposto in Interface Builder
- 8. Interface Builder UIDatePicker
- 9. Come verificare lo spazio disponibile disponibile in mongodb
- 10. Impossibile connettere IBOutlet in Interface Builder
- 11. Come rendere DockPanel riempire lo spazio disponibile
- 12. Aggiunta di celle statiche a UITableView in Interface Builder per iOS8? Sezione Contenuto non visualizzata
- 13. Impostazione dell'immagine di UIImageView in Interface Builder
- 14. Colori strani in XCode Interface Builder?
- 15. Posso riutilizzare i colori in Interface Builder?
- 16. Vincolo "Larghezza uguale altezza" in Interface Builder
- 17. Funzionalità nascoste di Interface Builder?
- 18. Layout CSS che riempie lo spazio disponibile
- 19. Interface Builder Clipping Designable Views
- 20. XCode Classe sconosciuta ***** nel file Interface Builder
- 21. UITableViewCell altezza non sta cambiando in UITableView quando si cambia in Interface Builder
- 22. Cassandra consuma tutto lo spazio su disco
- 23. Come si imposta stretchableImageWithLeftCapWidth in Interface builder?
- 24. NSTextField con NSNumberFormatter automatico in Interface Builder
- 25. Singleton in Interface Builder con ARC
- 26. Caratteri non visualizzati in Interface Builder
- 27. UISegmentedControl - modifica dell'altezza in Interface Builder
- 28. UIAsembra, vedere il risultato in Interface Builder?
- 29. Rimuovi l'autolayout (vincoli) in Interface Builder
- 30. Opzione "Aggiorna frequentemente" in Interface Builder
Potresti rinominarlo in qualcosa come: "UITableView utilizza tutto lo spazio disponibile in Interface Builder"? Il titolo attuale non è molto descrittivo – Casebash