gpt4 book ai didi

ios - 从带有 uinavigationbar 的 View 滑动到不带的 View 时出现错误

转载 作者:行者123 更新时间:2023-12-01 16:03:26 24 4
gpt4 key购买 nike

我有一个带有 2 个 View Controller 、ViewController 和 NextViewController 的应用程序。 ViewController 没有导航栏,有一个白色的状态栏。 NextViewController 确实有一个导航栏和一个黑色(默认)状态栏。从 NextViewController 滑回 ViewController 并取消滑动时,我遇到了一个错误,NextViewController 上的导航栏将消失。 Storyboard只有两个 View ,一个按钮和一个 Action 转场。该错误并不总是发生,但经常足以成为一个问题。该错误与 - (UIStatusBarStyle) preferredStatusBarStyle 方法有关。 ,因为当我删除方法时一切正常。

我能否以某种方式阻止此错误的发生,同时我的 ViewController 上仍然有一个白色状态栏并启用了滑动,或者我是否被迫删除任何一个功能?

View Controller

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
[self setNeedsStatusBarAppearanceUpdate];
}

- (void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:YES];
}

- (UIStatusBarStyle) preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}

下一个 View Controller
@implementation NextViewController

- (void)viewDidLoad {
[super viewDidLoad];
[self setNeedsStatusBarAppearanceUpdate];
}

- (void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
}

-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleDefault;
}

其他可能相关的信息:在装有 iOS 8 的 iPhone 5s 上遇到此问题,但它也发生在装有 iOS 9 的模拟器上。基于 View Controller 的状态栏外观设置为默认值,是。

最佳答案

状态栏样式取决于 - preferredStatusBarStyle如果导航栏被隐藏, View Controller 的 View Controller ,否则导航 Controller ,所以 - preferredStatusBarStyle在您的 NextViewController没用。

貌似这个bug和导航 Controller 的状态栏样式有关,可以继承UINavigationController覆盖方法childViewControllerForStatusBarStyle以避免错误。

@implementation MyNavigationController

- (UIViewController *)childViewControllerForStatusBarStyle {
return self.topViewController;
}

@end

现在状态栏样式将取决于 View Controller ,无论导航栏是否隐藏。并且错误不会发生。

关于ios - 从带有 uinavigationbar 的 View 滑动到不带的 View 时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32756887/

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