J'ai découvert que lorsque mon programme démarre, dans un de mes viewcontrollers l'ordre d'appel est viewDidAppear
, viewWillAppear
, viewDidAppear
.viewDidAppear appelé deux fois, mais viewWillAppear a appelé une fois
Je ne m'attendais pas à ce que le premier viewDidAppear
soit appelé. Qu'est-ce qui pourrait causer cela et comment puis-je le réparer? ATM J'ai un drapeau dans viewDiDAppear
pour vérifier si viewWillAppear
a été appelé, mais c'est un hack.
Le stacktrace (qui est identique dans les appels de bot à viewDidAppear) est:
#0 0x0000509e in -[MainView viewDidAppear:] at MainView.m:497
#1 0x3097e96e in -[UINavigationController navigationTransitionView:didEndTransition:fromView:toView:]
#2 0x30af3abe in -[UINavigationTransitionView _notifyDelegateTransitionDidStopWithContext:]
#3 0x30af4930 in -[UINavigationTransitionView _navigationTransitionDidStop]
#4 0x3091af0d in -[UIViewAnimationState sendDelegateAnimationDidStop:finished:]
#5 0x3091ba9e in +[UIViewAnimationState popAnimationState]
#6 0x30af46fd in -[UINavigationTransitionView transition:fromView:toView:]
#7 0x30af3b01 in -[UINavigationTransitionView transition:toView:]
#8 0x30979f09 in -[UINavigationController _startDeferredTransitionIfNeeded]
#9 0x30a97d9c in -[UILayoutContainerView layoutSubviews]
#10 0x0040bd94 in -[CALayer layoutSublayers]
#11 0x0040bb55 in CALayerLayoutIfNeeded
#12 0x0040b3ae in CA::Context::commit_transaction
#13 0x0040b022 in CA::Transaction::commit
#14 0x308f942a in -[UIApplication _reportAppLaunchFinished]
#15 0x308fef33 in -[UIApplication handleEvent:withNewEvent:]
#16 0x308fad82 in -[UIApplication sendEvent:]
#17 0x309013e1 in _UIApplicationHandleEvent
#18 0x32046375 in PurpleEventCallback
#19 0x30245560 in CFRunLoopRunSpecific
#20 0x30244628 in CFRunLoopRunInMode
#21 0x308f930d in -[UIApplication _run]
#22 0x309021ee in UIApplicationMain
#23 0x00001e82 in main at main.m:14
pouvez-vous s'il vous plaît partager votre hiérarchie de vue? Qu'est-ce qui est ajouté à la fenêtre? qu'est ce que rootViewController dans UINavigationController? etc –
Partagez du code. Vérifiez une faute d'orthographe de la méthode viewWillAppear. – coneybeare