2013-08-09 7 views
5

Sto migrando codice precedente che utilizza NIB per utilizzare la creazione di viste manuali (loadView) e Layout automatico. Il controller di visualizzazione radice è un contenitore VC (con 2 figli) che utilizza il layout automatico e presenta modalmente un controller di visualizzazione il cui layout è specificato in un NIB e non utilizza ancora il layout automatico. Tutto va bene dopo presentViewController:animated:completion:, ma quando la vista modale viene chiusa con dismissViewControllerAnimated:completion: tramite chiamata del delegato, la vista di presentazione viene lasciata in uno stato strano e inutilizzabile in cui il contenuto viene spostato in modo strano e non reagisce al tocco.Visualizzazione inutilizzabile dopo la rimozioneViewControllerAnimato: completamento:

Ho provato a creare un caso di test minimo per riprodurre il problema, ma non sono riuscito a riprodurre il problema.

Cosa potrebbe causare questo?

+0

http://stackoverflow.com/questions/17666907 sembra descrivere lo stesso problema. – Palimondo

risposta

7

Stavo impostando translatesAutoresizingMaskIntoConstraints = NO; sulla mia radice UIView. Appare il "più esterno" UIView - la superview nella radice della gerarchia della vista deve utilizzare il valore predefinito translatesAutoresizingMaskIntoConstraints = YES. Una volta rimosso, tutto ha funzionato come previsto.

+0

Hai trovato che questo si applica alla vista radice di un controller di visualizzazione figlio anche dopo che è stato aggiunto alla gerarchia di visualizzazione di un controllore della vista principale? – bilobatum

+0

Ciao. ho postato una domanda correlata con un progetto di esempio con il problema qui: http://stackoverflow.com/questions/40428075/segue-from-a-slpagingviewswift-vc-and-dismiss-the-destination-vc-to-return i non riesco a trovare come implementare le soluzioni che ho trovato nel mio contesto (SLPagingView). lo apprezzerei molto se qualcuno potesse dare un'occhiata e aiutare, grazie! –

0

Ho anche lo stesso problema e quando ho provato questo controller di navigazione funzionava bene ma non con il viewcontroller attuale. Utilizzare questo metodo di controllo della vista in basso insieme a translatesAutoresizingMaskIntoConstraints per risolvere questo problema.

-(void) viewWillLayoutSubviews 
{ 
    [super viewWillLayoutSubviews]; 

    self.view.translatesAutoresizingMaskIntoConstraints = NO; 
} 

Per favore lasciatemi ora che avete qualche preoccupazione al riguardo. Grazie

0

Una soluzione diversa - Ho trovato se si presenta da un controller di visualizzazione all'interno di una vista contenitore (al contrario di una sottoview), se si passa il passaggio da Modale a Show, i vincoli rimarranno gli stessi nella vista iniziale ma si anima ancora come se si presentasse modalmente e si possa ancora chiamare correttamente il ViewController.

2

Ho riscontrato problemi durante l'aggiornamento a IOS 11. Il layout di UICollectionView non mostrava più le celle. Risolto aggiungendo la riga:

controller.modalPresentationStyle = UIModalPresentationOverFullScreen; 
[self presentViewController:controller animated:YES completion:nil]; 

Non capisco perché questo consente di risolvere, ma non dandogli uno stile di presentazione veramente pasticci con i controllori che presentano sottostanti layout.

Problemi correlati