检测backButton目的的视图层次结构的正确方法是什么?

时间:2015-04-06 15:34:59

标签: ios uinavigationcontroller

此问题适用于我对MBPlacePickerController所做的更新。

我正在构建一个自定义视图控制器,有时会以自己的UINavigationController模式显示,有时会被推送到现有的导航控制器堆栈。

如果我的视图控制器以模态方式显示,我想在右侧显示我自己的“完成”按钮而不是后退按钮,在左侧显示第二个按钮。

如果导航堆栈上显示视图控制器,我想显示默认的后退按钮,然后我想显示右侧的其他按钮。

我正在试图找出检测视图控制器层次结构的最佳方法,但也许“正确”的方法是检查前一个视图控制器本身的后退按钮,然后适当地设置navigationItem。

任何人都能解开一些光明吗?

编辑:

为清楚起见,我正在对GitHub上的MBPlacePickerController库进行更新。我使用导航控制器来显示“自动”和“完成”按钮,所以我总是想要一个导航控制器。唯一的问题是地方选择器控制器是否提供导航控制器(在这种情况下将以模态方式显示)或者是否将位置选择器推到另一个导航控制器上。

问题是如何呈现后退按钮。我使用完成按钮,还是使用内置后退按钮?我正在尝试找出检测这种情况的最佳方法。

基本上,如果我尝试将位置选择器推到现有的导航控制器层次结构上,我不希望显示完成按钮。如果我出现在一个新的视图控制器中,我需要显示我自己的完成按钮。

另外,如果我有完成按钮,我需要检测解除视图控制器的正确方法。 (这更简单,因为我可以假设如果完成按钮,我们不使用后退按钮,我可以忽略模态显示的导航控制器。)

1 个答案:

答案 0 :(得分:1)

如果您(相关的视图控制器)位于导航层次结构中,则表示您具有非零navigationController。如果您以模态方式呈现,则表示您具有非零presentingViewController。因此,您知道自己在哪,并且可以相应地修改您的界面。