iOS 为啥在这种情况下 backBarButtonItem 为零

Posted

技术标签:

【中文标题】iOS 为啥在这种情况下 backBarButtonItem 为零【英文标题】:iOS why backBarButtonItem is nil in this scenarioiOS 为什么在这种情况下 backBarButtonItem 为零 【发布时间】:2016-05-27 12:01:05 【问题描述】:

我有一个嵌入在导航控制器中的视图控制器,其中有一个按钮,显示另一个视图控制器,如下所示:

在第二个视图控制器中,self.navigationItem.backBarButtonItem 的值为 nil,请问为什么?

虽然我在运行应用程序时可以看到返回按钮,如下所示:

更新

我读到视图控制器中的后退按钮是前一个视图控制器的导航项的责任,更准确地说,它是前一个视图控制器中导航项的责任。

所以我尝试在第一个视图控制器中执行此操作:

 self.navigationItem.backBarButtonItem!.title = "Wdd"

但我遇到了异常,因为 backBarButtonItem 在第一个视图控制器中也是 nil。

更新2

请大家看这里

https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/NavigationControllers.html#//apple_ref/doc/uid/TP40011313-CH2-SW3

有这句话

与当前视图控制器关联的导航项为导航栏的中心和右侧位置提供内容。前一个视图控制器的导航项提供左侧位置的内容

【问题讨论】:

您在哪种方法中检查 self.navigationItem.backBarButtonItem 的值? 签入 viewDidAppear @PradipVanparia 在视图中确实加载了方法 @PradipVanparia 请阅读我的更新,我读到 previous 视图控制器是返回栏按钮的负责人。所以不需要在第二个视图控制器中做任何事情,设置前一个视图控制器的后退栏的值就足够了,然后导航控制器会自动将该值作为第二个视图控制器的后退按钮.对吗? @PradipVanparia 或者你的意思是即使在第一个视图控制器中,我也应该在视图中设置后退按钮的值确实出现了方法? 【参考方案1】:

我自己找到了解决方案。

在 firstVC 中我这样做是因为确实加载了:

backButton.title = "ddddd"
        self.navigationItem.backBarButtonItem = backButton

它可以工作

我在这张图片之后得到了答案:

【讨论】:

【参考方案2】:

您可以从 Storyboard 在您的第二个控制器中添加导航项并设置返回按钮标题。这样self.navigationItem.backBarButtonItem.title 就不会为零了。

【讨论】:

这样,我将失去返回按钮的默认行为,我需要为此编写代码。 我在我的代码中尝试过,它可以工作,它会回到第一个控制器。

以上是关于iOS 为啥在这种情况下 backBarButtonItem 为零的主要内容,如果未能解决你的问题,请参考以下文章

为啥在这种情况下 python 不能绘制我的函数?

为啥在这种情况下需要 catch IOException

为啥在这种情况下星号位置存在差异,而其他情况则没有?

为啥 selectAnnotation 在这种情况下不起作用?

为啥 memset 在这种情况下会失败?

为啥使用?在这种情况下不工作? (迅速)