UINavigationController在Xcode 9上崩溃

每次我尝试在我的应用程序上使用navigationController推送视图时,我都会看到下面提供的控制台消息。 但是,如果我只推简单的视图控制器它工作正常,它只发生在导航控制器。

我没有使用第三方库推视图,我检查的UIkit框架是好的,我也build设之前清理项目,也尝试了一个新的视图控制器不同于我的自定义视图控制器,但错误是一样的,它是只发生在新版本的Xcode 9.0上,在以前的版本8.0这没有发生。

 ***终止应用程序由于未捕获exception'NSInternalInconsistencyException',原因:'叹气。  Contentview大小为零。

 ***第一个投掷堆栈:
 (
 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:withHorizo​​ntalFittingPriority: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视图] + 27
 13 UIKit 0x00000001106e36f6  -  [UINavigationController pushViewController:transition:forceImmediate:] + 676
 14 UIKit 0x00000001106e31d2  -  [UINavigationController pushViewController:animated:] + 792
 15 UIKit 0x00000001106c2cd1  -  [UINavigationController initWithRootViewController:] + 125
 16 Tigo货币分期付款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钱分期付款0x000000010a2f8a5f主+ 111
 48 libdyld.dylib 0x0000000114193d81 start + 1
 49  0x0000000000000001 0x0 + 1
 )
 libc ++ abi.dylib:以NSExceptiontypes的未捕获exception终止

这里是我在didFinishLaunchingWithOptions上的代码的一个例子

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

在使用navigationcontroller之后,它崩溃了。

我遇到了同样的问题,当我们用Xcode 8保存故事板并用Xcode 9打开项目时,会发生这种情况,因为Xcode 9使用安全区保存文档。 用Xcode 9保存的Xib源代码:

 <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> 

但Xcode 8保存的Xib是:

 <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> 

相应地更改故事板的源代码。

希望,它会帮助!

select您的视图控制器,然后进入编辑器 – >embedded – >导航控制器。 因为有些时候,如果控制器不在导航控制器层次结构中,那么当用户想要推送到另一个控制器时,应用程序崩溃 希望它会有所帮助。