NavigationBar 后退按钮奇怪的行为并且不起作用

Posted

技术标签:

【中文标题】NavigationBar 后退按钮奇怪的行为并且不起作用【英文标题】:NavigationBar back button strange behavior and not working 【发布时间】:2015-11-19 00:46:15 【问题描述】:

我在导航栏的后退按钮上遇到了奇怪的行为。我会尽量用截图来描述(通过链接,因为我还不能上传)

这是第一个屏幕,或隐藏导航栏的父视图:Screen 1

这是第一个屏幕的代码:

override func viewDidLoad() 
    super.viewDidLoad()
    self.navigationController?.navigationBarHidden = false
    // Do any additional setup after loading the view.

override func viewWillAppear(animated: Bool) 
    self.navigationController?.navigationBarHidden = false

这是我推送视图控制器的代码:

var second = self.storyboard?.instantiateViewControllerWithIdentifier("As_ThirdViewControllerID") as! As_ThirdViewController!

self.navigationController?.pushViewController(second, animated: true)

当您单击最后一个标签栏按钮时,它将带您进入第二个屏幕:Screen 2

与第一个屏幕的代码相同,只是导航栏没有隐藏

现在,在第二个屏幕中,您可以看到一个按钮...当您单击该按钮时,您将被带到第三个也是最后一个屏幕: Screen 3

与第一个屏幕的代码相同,只是导航栏没有隐藏

奇怪的行为: 当我向后滑动时(第三个屏幕->第二个->父级)-它正在工作.. 当我从第三个和最后一个屏幕按下返回按钮时 --> 它看起来像这样: Screen 4 -- 不工作,不返回上一个屏幕......“返回”这个词突然从箭头上消失了

到目前为止,我的课程中没有很多代码,因为我刚刚开始并制定设计,所以我无法弄清楚我的程序出了什么问题..

【问题讨论】:

为什么要标记这个Objective C?它的斯威夫特(非常丑陋)。删除标签或添加 Java、AngularJS 和其他标签并惹恼更多人。 Jesus swift 开发人员很烦人。 使链接可供所有人访问,而无需请求访问。 嗨,对不起,我已经公开了链接.. 我制作了objective c这个标签来吸引那些知道objective C的人的注意力,也许他们过去已经遇到过这种情况..希望你能帮助我。 放上你用来弹回的代码? 【参考方案1】:

这通常发生在您的 navigationController 堆栈和 navigationBar 堆栈不匹配时。

尝试添加自定义按钮和选择器然后弹出使用

self.navigationController.popViewController(viewController);

【讨论】:

发生不匹配是因为您在一个 VC 上没有导航栏按钮,而在其他 VC 上有。 你为什么把这个问题发了两次? ***.com/questions/32218716/…(另一个) 发布您的完整代码或将其托管在某个地方。我已经尝试过您的方案,但无法重现该问题。对我来说效果很好。 您应该已经编辑了您的原始问题。这样做你可能会收到很多反对票。 注意,我会编辑它,但是,您认为我的导航控制器/栏有什么问题?你看过另一个帖子吗?【参考方案2】:

我无法编辑自己的帖子,网站说它有未格式化的代码,而我添加的只是帖子下方的一个句子,在我编辑之前就有代码。我不知道发生了什么。

但这就是我所做的:

这似乎是ios中的一个错误,我看到了一个类似的帖子,但没有人自己解决这个问题:

Navigation stack becomes unusable after canceling iOS 7 back swipe gesture

我只是按照建议禁用了 interactivePopGestureRecognizer

【讨论】:

以上是关于NavigationBar 后退按钮奇怪的行为并且不起作用的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 NavigationBar 后退按钮自定义图像没有标签

SwiftUI NavigationBar 后退按钮在使用自定义字体时抱怨图标缩放

Flutter Web 中的路由有意外行为

在导航栏中将后退按钮更改为向下箭头

在导航栏中将后退按钮更改为向下箭头

navigationBar 和 MPMoviePlayerController 的极其奇怪的行为。 iOS中的错误或我的错误?