gpt4 book ai didi

ios - 隐藏的后退按钮有时会出现在导航栏中

转载 作者:可可西里 更新时间:2023-11-01 04:41:48 26 4
gpt4 key购买 nike

在我的应用程序中,我使用的是 Split View,后退按钮隐藏在详细 View Controller 中,而且我正在执行一些后台操作。有时,当应用程序在执行后台操作后从后台转到前台时,隐藏的后退按钮会出现在导航栏上。只有在后台操作结束后回到前台才会出现,如果来到前台还在后台操作则不会出现。我不明白为什么隐藏的后退按钮有时会出现,即使我隐藏了它。如果我点击那个按钮没有任何反应,但它仍然出现。请帮我解决这个问题。

在右面板的 RootView 中,我像这样隐藏后退按钮

  - (void) viewWillAppear
{
self.navigationController.navigationItem.hidesBackButton = YES;
self.navigationController.navigationItem.leftBarButtonItem = nil;
}

在didEnterBackground中,启动带定时器的后台任务

        UIApplication* app = [UIApplication sharedApplication];

backgroundTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:backgroundTask];
backgroundTask = UIBackgroundTaskInvalid;
}];

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

NSTimer* t = [NSTimer scheduledTimerWithTimeInterval:INITIAL_BACKGROUND_TIME_LIMIT target:self selector:@selector(pushPullServer) userInfo:nil repeats:NO];
[[NSRunLoop currentRunLoop] addTimer:t forMode:NSDefaultRunLoopMode];
[[NSRunLoop currentRunLoop] run];
});

从后台过来后,在appDidBecomeActive

  - (void) appDidBecomeActive
{
self.splitViewController.viewControllers = [NSArray arrayWithObjects:self.tabBar, detailNavigation, nil];
self.splitViewController.delegate = self;
self.window.rootViewController = self.splitViewController;
}

最佳答案

在 View Controller 转换期间设置 hidesBackButton 属性似乎是一个问题(viewWillAppear 是该过程的一部分)。我在 iOS6 中没有注意到这个问题,所以我相信这与 iOS7 处理过渡和渲染的方式有关。

我的解决方案是确保 hidesBackButton 在初始化时具有正确的状态。因此,您需要在 - (id)init 或其某些变体中设置属性值。

如果这不可能,那么我能做的最好的事情就是在 viewDidAppear 而不是 viewWillAppear 中设置状态,确保它是动画的,所以它不会太刺耳用户。

例如:

[self.navigationItem setHidesBackButton:YES animated:YES];

关于ios - 隐藏的后退按钮有时会出现在导航栏中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20400118/

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