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: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视图] + 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 – >导航控制器。 因为有些时候,如果控制器不在导航控制器层次结构中,那么当用户想要推送到另一个控制器时,应用程序崩溃 希望它会有所帮助。