2017-10-04 4 views
0

J'ai un UIViewController, appelez ceci ViewControllerB, que j'essaye de pousser de ViewControllerA. ViewControllerB a une tonne d'interface utilisateur personnalisée à partir des bibliothèques (calendrier, contrôles segmentés, etc), ainsi qu'un UIPageViewController avec tableViews. J'ai remarqué qu'il ya un délai de 1-3 secondes quand je pousse ViewControllerB, et en utilisant le profileur de temps, je suis capable de le tracer au blocage du thread principal en raison de la mise en place de ces UI dans viewDidLoad. Il semble donc que l'application ait besoin de temps pour configurer l'interface utilisateur avant de pousser le contrôleur de vue.Retard en poussant le contrôleur de vue (iOS)

Quelle est la meilleure façon de configurer une tonne d'interface utilisateur, mais éviter de bloquer le thread principal lorsque vous appuyez sur les contrôleurs de vue?

+0

Supprimez tous les codes des méthodes viewDidLoad et viewWillAppear et conservez-les dans viewDidAppear. –

Répondre

0

Il y avait trop de disposition en cours dans l'initialisation bloquant le thread principal. Seule la mise en page est nécessaire dans les méthodes init, viewDidLoad et viewWillAppear, et toute autre action dans viewDidAppear.