gpt4 book ai didi

ios - iOS 中的 UINavigationController 标题似乎已损坏

转载 作者:行者123 更新时间:2023-11-29 00:41:57 26 4
gpt4 key购买 nike

当我以模态方式呈现一个 UINavigationController,然后将一些 UIViewcontroller 推送(无动画)到它上面时,最终显示的 navigationItem.title 与我预期的不同。

我尝试缩小问题范围,并提出了以下简短代码来重复该问题:

@implementation DummyRootVC
- (void) viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
UINavigationController* nc = [[UINavigationController alloc] initWithRootViewController:[[Dummy1VC alloc] init]];
[self presentViewController:nc
animated:false
completion:nil];
}
@end

@implementation Dummy1VC
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor=[UIColor whiteColor];
self.navigationItem.title= @"DUMMY1";
[self.navigationController pushViewController:[[Dummy2VC alloc] init]
animated:false];
}
@end

@implementation Dummy2VC
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.title= @"DUMMY2";
self.view.backgroundColor=[UIColor yellowColor];
[self.navigationController pushViewController:[[Dummy3VC alloc] init]
animated:false];
}
@end

@implementation Dummy3VC
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor=[UIColor orangeColor];
self.navigationItem.title= @"DUMMY3";
[self.navigationController pushViewController:[[Dummy4VC alloc] init]
animated:false];
}
@end

@implementation Dummy4VC
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.title= @"DUMMY4";
self.view.backgroundColor=[UIColor greenColor];
for (UIViewController* vc in self.navigationController.viewControllers) {
NSLog(@"VC Stack: %@ Title:%@",vc,vc.navigationItem.title);
}
NSLog(@"End");
}
@end

在 AppDelegate 中我设置:

 self.window.rootViewController = [[DummyRootVC alloc] init];

当运行该代码时,显示的标题为“Dummy 2”,后退按钮名为“Dummy 4”,而我实际上希望标题为“Dummy 4”,后退按钮名为“Dummy 3”。

日志按预期显示正确的 ViewController-Stack 并且背景颜色(按预期)为绿色(有趣的是,在单击“返回”后仍为绿色):

VC Stack: Title:DUMMY1

VC Stack: Title:DUMMY2

VC Stack: Title:DUMMY3

VC Stack: Title:DUMMY4

End

我可以解决这个问题,因为它似乎与非动画设置以及模态呈现导航 Controller 有些相关,但我想了解潜在的问题......

谁能给我一些见解?这是一些错误还是我(正如我怀疑的那样)只是以错误的方式做事?

谢谢!

最佳答案

viewDidLoad 的 push/present 放到 viewWillAppearviewDidAppear 以便 viewController 可以正确初始化它的 subview 以避免问题 :D

关于ios - iOS 中的 UINavigationController 标题似乎已损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39238725/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com