ios - 为 backButton 目的检测 View 层次结构的正确方法是什么?

标签 ios uinavigationcontroller

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

我正在构建一个自定义 View Controller ,有时会在其自己的 UINavigationController 中以模态方式显示,有时会推送到现有的导航 Controller 堆栈上。

如果我的 View Controller 以模态方式呈现,我想在右侧显示我自己的“完成”按钮,而不是后退按钮,并在左侧显示第二个按钮。

如果 View Controller 显示在导航堆栈上,我想显示默认的后退按钮,然后我想显示右侧的另一个按钮。

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

任何人都可以阐明一下吗?

编辑:

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

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

本质上,如果我尝试将地点选择器推送到现有的导航 Controller 层次结构上,我不希望显示完成按钮。如果我出现在新的 View Controller 中,我需要显示我自己的完成按钮。

此外,如果我有“完成”按钮,我还需要检测关闭 View Controller 的正确方法。 (这更简单,因为我可以假设如果完成按钮在那里,我们就不会使用后退按钮,并且我可以关闭模​​态呈现的导航 Controller 。)

最佳答案

如果您(所讨论的 View Controller )位于导航层次结构中,则您有一个非零的 navigationController。如果您以模态方式呈现,则您有一个非零的 presentingViewController。因此,您知道自己所在的位置,并可以相应地修改您的界面。

关于ios - 为 backButton 目的检测 View 层次结构的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29474381/

相关文章:

ios - 组合标签栏、导航和表格 View Controller

ios - UIPopoverController 中 UINavigationBar 的色调颜色不起作用

swift - 通过键盘扩展在 UINavigationController 中呈现 subview

ios - 获取类型 'any' 的错误值没有成员 'value'

ios - 无法在 UIPopover 的 UINavigationController 侧调整 UIViewController 的高度 contentSizeForViewInPopover

ios - 图像未绑定(bind)到 UIImageView

ios - 获取游戏请求ID/获取Facebook游戏请求通知内容

ios - 在ios中是否可以让导航栏保持原样,而不是在单击时在 View 层次结构中移动?

ios - 如何在iOS7中绘制透明的UIToolbar或UINavigationBar

ios - iOS 10支持从XCode 7.x创建ipa并提交到AppStore吗?