Il mio UITableView
ha un gruppo di celle riutilizzabili e quando tocco su una di esse, mi porta ad un altro controller di visualizzazione (tramite push segue) che mostra i dettagli di quella cella (diciamo è un oggetto, quindi mostrerebbe dettagli su un oggetto: nome, prezzo, immagine, ecc ...). Quando visualizzo il controller di visualizzazione (toccando il pulsante Indietro), lo UITableView
ha uno strano comportamento:Comportamento strano di UITableViewController dopo aver scoccato un controller di visualizzazione
a) se viene fatto scorrere fino in fondo, scorrerà automaticamente verso l'alto (circa 50 punti), lasciando l'ultima cella appena visibile, quindi devo tornare indietro di nuovo. Le mie celle hanno tutte 60 punti per altezza.
b) la barra di scorrimento mostra sempre e quindi scompare, indicando che qualcosa si sta muovendo che UITableView
(sebbene se non scorresse verso il basso, il contenuto non si muoverà automaticamente).
Questo succede in più UITableView
che ho nella mia app. Non sto forzando un ricaricamento della vista tabella in viewWillAppear, quindi non capisco cosa sta succedendo. Il mio contenuto è statico dopo il caricamento dal server (a meno che l'utente non lo modifichi e quindi venga eseguito il ricaricamento). Ma semplicemente mostrando i dettagli di un oggetto e scoppiando che VC non cambia nulla nella vista tabella.
Modifica: OK, ho capito qual è il problema: sto nascondendo un UIToolbar
quando spingo quel seguito. Se lo tengo sempre visibile (che non voglio), mostra ancora le barre di scorrimento che si animano quando scoppiettano nella mia vista tabella ma non scorre la vista tabella se sulle ultime righe.
Potresti spiegare più in dettaglio perché questo sta accadendo? O potrebbe qualcuno. – Krtko
Il suo stupefacente ... ha risolto il problema simile ... Il problema è che, ogni volta che si torna indietro da un viewcontroller, l'offset di scorrimento della vista tabella cambia di conseguenza. Quindi è necessario acquisire il valore contentoffset in una proprietà all'interno di prePareForSegue: metodo (ad esempio, prima di navigare) e quindi verificare che nella stessa classe all'interno di viewWillAppear: method. E se viene modificato, imposta il valore della proprietà scrolloffset su zero –