如何以编程方式将面包屑视图添加到我的 UINavigationController 应用程序?

Posted

技术标签:

【中文标题】如何以编程方式将面包屑视图添加到我的 UINavigationController 应用程序?【英文标题】:How to programmatically adda breadcrumb view to my UINavigationController App? 【发布时间】:2011-02-28 19:05:42 【问题描述】:

我有一个 UINavigationController 应用程序。我想在 UINavigationBar 下方添加一个小条,高度约为 20px。 y 应用程序快完成了,所以我想重建尽可能少的代码。例如,如果我想在我的应用程序的每个视图的底部添加一个按钮,我可以通过使用类别扩展 UIViewController 并添加一个 UIButton 作为当前控制器视图的子视图来实现,可能在 viewDidLoad 方法中。

这种方法效果很好,因此我可以将我的 UILabel 添加到我所有视图顶部的视图中。问题是它不占用空间。它总是在我以前的视图之上(UITableView ...)。什么是最好的方式(或只是一种方式)来完成这样的事情,而不必创建一个具有 2 帧的视图,并让我的所有主要视图都扩展它?

我想过改变 UINavigationBar 的高度,但这绝对不是一个选项。UINavigationBar 的 prompt 属性只是太大(大约 30px)。

我还尝试在每个 UIViewController 的 viewWillAppear 方法中创建一个新视图,将我的面包屑子视图和原始视图添加到该视图中,但它不起作用。

对此有什么想法吗?

谢谢!

【问题讨论】:

不是你问题的真正答案,但你知道:Apple's docs on UINavigationController 警告不要尝试将面包屑控件添加到 UINavigationController 栏,因为如果你需要呈现复杂的跟踪信息,“你的应用程序可能太复杂了,你应该简化”(意译)。我知道您并没有尝试将面包屑实际添加到导航控制器本身,但复杂性参数仍然相关。 【参考方案1】:

如果我是你,我会创建一个新的 UIView 子类来表示这个东西,并将它嵌入到各个 UIViewController 的视图中。他们可以通过查看 UINavigationController 的 .navigationControllers 数组来访问导航堆栈、遍历该数组并获取视图标题等。

【讨论】:

是的,这就是我正在做的。但问题是,如果我将此视图“嵌入”到 UIViewControllers 的视图中,它不会占用空间。您是否建议我修改每个 nib 文件以添加此面包屑视图?谢谢你这么快的回复顺便说一句。 嗯,是的,我的意思是,一个视图不会滑离另一个视图,除非你告诉它。您可以在 IB 或代码中做到这一点,但是您必须以一种或另一种方式将您的一件事从另一件事下移出。这不像制作一个网页,其中的东西只是在页面上颠簸。你实际上必须把事情安排好。 嘿,丹,是的,我知道这不是盒子模型。我知道如何移动视图更改例如框架属性。问题是当一个视图有一个涉及到 NavigationController 的 NavigationBar 时,它不再是一个视图,它变成了一个 UILayoutContainerView,这是一个没有文档记录的 ios 类,并且触摸它的框架会导致噩梦......我想我会必须做那个双重视图并改变我所有的课程!啊啊啊! 嗯...这就是为什么我建议你的新 UIView 子类面包屑是每个视图上的一段内容。你可以很容易地操作 UINavigationController 管理的 UIView 元素的框架。

以上是关于如何以编程方式将面包屑视图添加到我的 UINavigationController 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

iPhone SDK - 以编程方式添加 UINavigationController

如何以编程方式在导航栏正下方添加视图?

NSLayout 约束失败

如何将 segue 标识符添加到以编程方式进行的模态转换?

如何以编程方式将 UISearchBar 添加到我的 tableView 中?

以编程方式为 ViewController 创建标签栏