ios - "NSInternalInconsistencyException [...] Sigh. Contentview size is zero."使用 UINavigationController 时崩溃

标签 ios swift crash

我的代码在 iOS 10.3.3 上运行得很好,而当我在 iOS 11.2.1 上运行相同的代码时,它会在启动时导致崩溃并出现以下错误:

Assertion failure in -[_UINavigationBarVisualProviderModernIOS _contentViewFittingHeight], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3698.33.7/_UINavigationBarVisualProviderModernIOS.m:569
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Sigh. Contentview size is zero.'

我清理了代码,清除了派生数据,但这些都没有解决问题。

screenshot of crash

最佳答案

我用于幻灯片菜单“iOS-Slide-Menu”的库中存在问题。所以,我只是简单地更改了库中的这两个方法,然后就可以正常工作了。

- (void)setup
{
    [[NSUserDefaults standardUserDefaults] setObject:nil forKey:@"ssidName"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    if (singletonInstance)
        NSLog(@"Singleton instance already exists. You can only instantiate one instance of SlideNavigationController. This could cause major issues");

    singletonInstance = self;

    self.menuRevealAnimationDuration = MENU_SLIDE_ANIMATION_DURATION;
    self.menuRevealAnimationOption = MENU_SLIDE_ANIMATION_OPTION;
}

- (void)viewWillLayoutSubviews
{
    [super viewWillLayoutSubviews];

    // Update shadow size of enabled
    if (self.enableShadow)
        self.view.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.view.bounds].CGPath;
    self.landscapeSlideOffset = self.view.frame.size.width/6;
    self.portraitSlideOffset = self.view.frame.size.width/6;
    self.panGestureSideOffset = 0;
    self.avoidSwitchingToSameClassViewController = YES;
    self.enableShadow = YES;
    self.enableSwipeGesture = NO;
    self.delegate = self;
    // When menu open we disable user interaction
    // When rotates we want to make sure that userInteraction is enabled again
    [self enableTapGestureToCloseMenu:NO];

    if (self.menuNeedsLayout)
    {
        [self updateMenuFrameAndTransformAccordingToOrientation];

        // Handle different horizontal/vertical slideOffset during rotation
        // On iOS below 8 we just close the menu, iOS8 handles rotation better so we support keepiong the menu open
        if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0") && [self isMenuOpen])
        {
            Menu menu = (self.horizontalLocation > 0) ? MenuLeft : MenuRight;
            [self openMenu:menu withDuration:0 andCompletion:nil];
        }

        self.menuNeedsLayout = NO;
    }
}

关于ios - "NSInternalInconsistencyException [...] Sigh. Contentview size is zero."使用 UINavigationController 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48018095/

相关文章:

iOS SwiftUI 搜索栏和 REST-API

android - 我的应用程序总是崩溃 : Unable to instantiate activity

json - 解析 json,填充 Collection View Swift 4.2

iphone - 从应用发送崩溃日志?

excel - 为什么嵌套数组裂缝达到上限时会表现出色?

ios - UICollectionViewCell 和 UICollectionView 的高度相等

ios - 通过单击第一个按钮 IOS7 更改第二个按钮图像

ios - UIWebView - NSStringWithFormat

ios - 是否值得检查 statusForApplicationPermission 或仅在 CloudKit 中调用 requestApplicationPermission?

ios - Swift AVPlayer 没有完成按钮