Ho una vista mostrata sotto un controller di navigazione. La vista contiene una sottoview nella parte superiore e una vista tabella nella parte inferiore. La tabella potrebbe avere righe che si estendono oltre l'altezza visibile in base ai dati. Quando ho righe che sono sotto l'ultima riga visibile, se faccio scorrere la vista verso l'alto, rimbalza, non rimane lì. C'è un modo per farlo rimanere? Ho provato a fare in modo che il genitore veda una vista di scorrimento e questo non ha aiutato. La mia vista proviene da un XIB.Lo scrolling di Tableview rimbalza indietro e nasconde le celle inferiori
risposta
Suoni come la dimensione del tuo UITableView è leggermente più grande dell'area disponibile sullo schermo di iPhone. Ciò potrebbe essere dovuto al fatto che la vista non ha tenuto conto della dimensione della barra di navigazione di hte. Come test, entra in Interface Builder e rendi UITableView molto più piccolo, ad esempio metà delle dimensioni, in modo da poter vedere chiaramente la parte superiore e inferiore. Vedi se hai ancora lo stesso rimbalzo.
Se le dimensioni sono corrette, UITableView non ha bisogno di un UIScrollView per funzionare come previsto. In effetti, ci sarebbero pochi motivi, a cui posso pensare in questo momento (diversi da quelli a scorrimento orizzontale), che vorresti un UITableView all'interno di un UIScrollView.
Nel tuo livello superiore Visualizza Controller, nelle impostazioni "Metriche simulate", imposta Top Bar e/o Bottom Bar (a seconda di cosa viene visualizzato nel View Controller) su "opaco". Quindi ridimensionare la vista tabella per adattarla alla barra di navigazione e alla barra degli strumenti/barra delle schede. Infine, aggiungere due vincoli:
- Top Spazio per Top Guida layout
- spazio inferiore a Guida layout fondo
funzionato molto bene per me, indipendentemente dall'orientamento.
Se non si utilizza Storyboard, si potrebbe provare la seguente (SWIFT) Codice:
tableView.contentInset = UIEdgeInsetsMake((self.navigationController!.navigationBar.frame.origin.y + self.navigationController!.navigationBar.frame.size.height), 0, 0, 0)
self.view.addSubview(tableView)
Se si dispone di una barra degli strumenti o (se si utilizza un TabBarController), è necessario regolare la anche in basso:
tableView.contentInset = UIEdgeInsetsMake((self.navigationController!.navigationBar.frame.origin.y + self.navigationController!.navigationBar.frame.size.height), 0, 0, 0)
self.view.addSubview(tableView)
Si prega di notare che questo è un codice semplice e 'approssimativo'. Puoi renderlo più carino se necessario :)
Grazie per la tua osservazione, questo ha risolto il problema. – Umark
Grande. Vedo dalla tua storia che non stai selezionando nessuna delle risposte accettate come risposte ufficiali alle tue domande. Forse non lo sapevi, ma a sinistra delle risposte vedi un segno di spunta. Se fai clic su questo, stai selezionando la risposta che è stata la soluzione al tuo problema. Questo mi dà una certa reputazione, oltre a persone che hanno la stessa domanda, vedono quale risposta ti ha aiutato. Quando ne hai la possibilità, fai clic sul segno di spunta. Grazie. – mahboudz
Impressionante, ho provato un sacco di cose prima che questo risolvesse il mio problema. –