2015-04-06 64 views
0

此问题适用于我对MBPlacePickerController进行的更新。为backButton目的检测视图层次结构的正确方法是什么?

我正在构建自定义视图控制器,有时会在其自己的UINavigationController中以模态方式显示,而其他时间会推送到现有的导航控制器堆栈上。

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

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

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

任何人都可以点亮一下吗?

编辑:

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

问题是如何呈现后退按钮。我是否使用完成按钮或使用内置的后退按钮?我试图找出检测这个问题的最佳方法。基本上,如果我尝试将位置选取器推到现有的导航控制器层次结构上,我不想显示完成按钮。如果我在一个新的视图控制器中,我需要显示我自己完成的按钮。

另外,我需要检测正确的方法来解除我的视图控制器,如果我有完成按钮。 (这很简单,因为我可以假设,如果完成按钮在那里,我们不使用后退按钮,并且我可以关闭模​​态呈现的导航控制器。)

+0

你可以在模态上引入你的自定义视图控制器(不在导航控制器堆栈中),然后让你的“完成”按钮简单地关闭当前的视图控制器?然后您将返回到您来自的前一个视图控制器(和导航控制器堆栈)。 –

+0

是什么问你如何确定你的ViewController被推送或模态显示!?我对“在其自己的UINavigationController模块中显示”部分感到困惑,是已经工作或想要实现的东西? – luk2302

+0

为了清晰起见进行了编辑。 – Moshe

回答

1

如果您(视图控制器在问题中)是在导航层次结构中,您有一个非零navigationController。如果您以模态形式呈现,则您有非零presentingViewController。因此,你知道你在哪,并且可以相应地修改你的界面。

+0

这类作品适合我。 (有关更多信息,请参阅我的更新。)我想我需要检查位置选取器控制器的内部导航控制器上的'presentsViewController'。 – Moshe

相关问题