2017-09-22 28 views
6

Za każdym razem, gdy próbuję nacisnąć widok z navigationController na mojej aplikacji, otrzymuję komunikat konsoli podany poniżej. Ale jeśli popchnę tylko prosty kontroler widoku, działa dobrze, dzieje się to tylko z kontrolerem nawigacyjnym.UINavigationController Crashes na Xcode 9

Nie używam biblioteki stron trzecich do wypychania widoków, sprawdziłem framework UIkit jest OK, ja też czyścimy projekt przed budowaniem, próbowałem również z nowym kontrolerem widoku innym niż mój niestandardowy kontroler widoku ale błąd jest tak samo dzieje się tylko w nowej wersji Xcode 9.0, w poprzedniej wersji 8.0 tak się nie stało.

 
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Sigh. Contentview size is zero.' 

*** First throw call stack: 
(
0 CoreFoundation      0x000000010d6ec1cb __exceptionPreprocess + 171 
1 libobjc.A.dylib      0x00000001132a5f41 objc_exception_throw + 48 
2 CoreFoundation      0x000000010d6f1362 +[NSException raise:format:arguments:] + 98 
3 Foundation       0x000000010eabb089 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 193 
4 UIKit        0x00000001110d7701 -[_UINavigationBarVisualProviderModernIOS _contentViewFittingHeight] + 265 
5 UIKit        0x00000001110da40e -[_UINavigationBarVisualProviderModernIOS heightRangeFittingWidth:] + 427 
6 UIKit        0x00000001110da253 -[_UINavigationBarVisualProviderModernIOS sizeThatFits:] + 138 
7 UIKit        0x000000011105443d -[UIView(UIConstraintBasedLayout) systemLayoutSizeFittingSize:withHorizontalFittingPriority:verticalFittingPriority:] + 246 
8 UIKit        0x00000001106cc900 -[UINavigationController setNavigationBar:] + 348 
9 UIKit        0x00000001106cc677 -[UINavigationController _navigationBarHiddenByDefault:] + 161 
10 UIKit        0x00000001106d4a7d -[UINavigationController loadView] + 183 
11 UIKit        0x0000000110697941 -[UIViewController loadViewIfRequired] + 195 
12 UIKit        0x000000011069819e -[UIViewController view] + 27 
13 UIKit        0x00000001106e36f6 -[UINavigationController pushViewController:transition:forceImmediate:] + 676 
14 UIKit        0x00000001106e31d2 -[UINavigationController pushViewController:animated:] + 792 
15 UIKit        0x00000001106c2cd1 -[UINavigationController initWithRootViewController:] + 125 
16 Tigo Money Staging     0x000000010a1add26 -[MTAppDelegate openStartUp] + 358 
17 Tigo Money Staging     0x000000010a1ac8c1 -[MTAppDelegate application:didFinishLaunchingWithOptions:] + 241 
18 UIKit        0x00000001104f135a -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 267 
19 UIKit        0x00000001104f2db7 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 4105 
20 UIKit        0x00000001104f8245 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1720 
21 UIKit        0x00000001108b3c6c __111-[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:]_block_invoke + 924 
22 UIKit        0x0000000110c813ef +[_UICanvas _enqueuePostSettingUpdateTransactionBlock:] + 153 
23 UIKit        0x00000001108b3865 -[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:] + 249 
24 UIKit        0x00000001108b40c3 -[__UICanvasLifecycleMonitor_Compatability activateEventsOnly:withContext:completion:] + 668 
25 UIKit        0x0000000111211c11 __82-[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:]_block_invoke + 262 
26 UIKit        0x0000000111211aca -[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:] + 444 
27 UIKit        0x0000000110effb9c __125-[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:]_block_invoke + 420 
28 UIKit        0x00000001110fac3e _performActionsWithDelayForTransitionContext + 100 
29 UIKit        0x0000000110eff998 -[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:] + 231 
30 UIKit        0x0000000110c80a4c -[_UICanvas scene:didUpdateWithDiff:transitionContext:completion:] + 392 
31 UIKit        0x00000001104f6ac6 -[UIApplication workspace:didCreateScene:withTransitionContext:completion:] + 523 
32 UIKit        0x0000000110abf523 -[UIApplicationSceneClientAgent scene:didInitializeWithEvent:completion:] + 369 
33 FrontBoardServices     0x0000000118890158 -[FBSSceneImpl _didCreateWithTransitionContext:completion:] + 338 
34 FrontBoardServices     0x0000000118898c4d __56-[FBSWorkspace client:handleCreateScene:withCompletion:]_block_invoke_2 + 235 
35 libdispatch.dylib     0x000000011411743c _dispatch_client_callout + 8 
36 libdispatch.dylib     0x000000011411caf4 _dispatch_block_invoke_direct + 592 
37 FrontBoardServices     0x00000001188c4672 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 24 
38 FrontBoardServices     0x00000001188c4328 -[FBSSerialQueue _performNext] + 464 
39 FrontBoardServices     0x00000001188c4897 -[FBSSerialQueue _performNextFromRunLoopSource] + 45 
40 CoreFoundation      0x000000010d68f2b1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 
41 CoreFoundation      0x000000010d72ed31 __CFRunLoopDoSource0 + 81 
42 CoreFoundation      0x000000010d673c19 __CFRunLoopDoSources0 + 185 
43 CoreFoundation      0x000000010d6731ff __CFRunLoopRun + 1279 
44 CoreFoundation      0x000000010d672a89 CFRunLoopRunSpecific + 409 
45 GraphicsServices     0x0000000114ce59c6 GSEventRunModal + 62 
46 UIKit        0x00000001104f9d30 UIApplicationMain + 159 
47 Tigo Money Staging     0x000000010a2f8a5f main + 111 
48 libdyld.dylib      0x0000000114193d81 start + 1 
49 ???         0x0000000000000001 0x0 + 1 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

tutaj jest przykład z mojego kodu na didFinishLaunchingWithOptions

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
CustomViewController *startUpVC = [[CustomViewController alloc] init]; 
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:startUpVC]; 

po użyciu navigationcontroller zdanie się zawiesi.

+0

znalazłeś rozwiązanie? –

+1

jeszcze nie, wciąż nad tym pracuję –

+0

Czy to potwierdza, że ​​wbudowany kontroler widoku w kontroler nawigacji? A następnie przesłać do innego kontrolera? –

Odpowiedz

0

Cierpiałem z tym samym problemem, kiedy mamy zapisany scenariusz z Xcode 8 i otwarcie w projekcie z Xcode 9, Dzieje się tak dlatego, że Xcode 9 zachowuje dokument przy użyciu bezpiecznego obszaru. kod źródłowy XIb zapisywane z Xcode 9:

<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13196" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> 
<device id="retina4_7" orientation="portrait"> 
    <adaptation id="fullscreen"/> 
</device> 
<dependencies> 
    <deployment identifier="iOS"/> 
    <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13173"/> 
    <capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/> 
    <capability name="Safe area layout guides" minToolsVersion="9.0"/> 
    <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> 
</dependencies> 
</document> 

ale XIb zapisywane z Xcode 8 brzmi:

<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12120" systemVersion="16F73" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES"> 
<device id="retina4_0" orientation="portrait"> 
    <adaptation id="fullscreen"/> 
</device> 
<dependencies> 
    <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12088"/> 
    <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> 
</dependencies> 
</document> 

zmiana kod źródłowy ujęć odpowiednio.

Mam nadzieję, że to pomoże!

+0

Dziękuję bardzo, spróbuję tego, wymyśl swoje rozwiązanie –

+1

Występuję w tych samych problemach. Czy możesz wyjaśnić, co sugerujesz? Czy zmienię kod źródłowy z powrotem na format xcode 8 (brak bezpiecznego obszaru), czy też muszę się upewnić, że wszystkie storyboardy i końcówki mają format xcode 9? – pbuchheit

0

Wybierz kontroler widoku, a następnie przejdź do Edytora-> Osadź w-> Kontroler nawigacyjny. Ponieważ jakiś czas, gdy kontroler nie znajduje się w hierarchii kontrolerów nawigacyjnych, następuje awaria aplikacji, gdy użytkownik chce przekazać do innego kontrolera. Mam nadzieję, że to pomoże.

+0

Cześć! w tym przypadku mój kontroler widoku ma tylko jeden ".xib", który nie jest osadzony w kontrolerze nawigacyjnym, w tym przypadku nie ma on storyboardu. I tak to sprawdzę. Dzięki za odpowiedź :) –

Powiązane problemy