Xcode 15:为导航控制器设置自定义导航栏时应用程序崩溃

问题描述 投票:0回答:1

我为 UINavigationBar 创建了一个自定义类,它具有应用程序所需的所有自定义功能。 初始化类后,我将其添加到导航控制器中,如下所示

if (!navBar) {
    navBar=[[NavigationBar alloc]initWithFrame:self.navigationController.navigationBar.frame];
    [self.navigationController setValue:navBar forKeyPath:@"navigationBar"];
 }

我的应用程序上线崩溃了

[self.navigationController setValue:navBar forKeyPath:@"navigationBar"];

在 Xcode 14 之前它工作正常,但在 Xcode 15 上它崩溃了。非常感谢任何帮助。

下面是我遇到的崩溃问题

*** Assertion failure in -[UINavigationBar layoutSubviews], UINavigationBar.m:3856
objective-c xcode uinavigationbar xcode15 ios17
1个回答
0
投票

将代码放入 viewDidLayoutSubviews 后我能够解决问题

-(void)viewDidLayoutSubviews{
   [self.navigationController setValue:navBar forKeyPath:@"navigationBar"];
}

此代码运行并且不再崩溃后

© www.soinside.com 2019 - 2024. All rights reserved.