在使用iOS 11的大标题导航时,- [UITableView _addScrollViewScrollObserver:]中的断言失败。

8

我有一个带有表格视图的视图控制器,其中包含标签栏控制器。

我正在使用代码设置导航栏的大标题:

if (@available(iOS 11.0, *)) {
        [[UINavigationBar appearance] setPrefersLargeTitles:YES];
    } else {
        // Fallback on earlier versions
    }

当我第二次打开标签页时,应用程序崩溃了。或者随机切换选项卡并显示以下消息。

错误消息如下:

Assertion failure in -[UITableView _addScrollViewScrollObserver:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3694.4.18/UIScrollView.m:7693

有什么解决问题的想法。谢谢。

1
即使在 iOS 12 上,当我的视图位于 tabBarController 中时,我仍然会遇到此异常。 - Matjan
1个回答

0

崩溃是由这个方法[[UINavigationBar appearance] setPrefersLargeTitles:YES];引起的。不要使用上述方法。

在您的UIViewControllers中使用以下代码

if (@available(iOS 11.0, *))
    {
        self.navigationController.navigationBar.prefersLargeTitles = true;
        self.navigationController.navigationBar.topItem.title = @"Your Title here";
        self.navigationController.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeAutomatic;

        NSDictionary *attributes = @{NSForegroundColorAttributeName: [UIColor redColor]};
        self.navigationController.navigationBar.largeTitleTextAttributes = attributes;
    }
    else
    {
        // Fallback on earlier versions
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接