在没有 UITabBar 或 UINavigationBar 的情况下在 iOS 中编排多个视图的最佳方法?

Posted

技术标签:

【中文标题】在没有 UITabBar 或 UINavigationBar 的情况下在 iOS 中编排多个视图的最佳方法?【英文标题】:Best way to orchestrate multiple views in iOS without UITabBar or UINavigationBar? 【发布时间】:2010-10-05 17:56:38 【问题描述】:

我正在尝试创建一个带有欢迎屏幕的 iPhone 应用程序,该应用程序会导致两个或三个完全不同的 UI;一旦你钻研了一个,你就不会对其他的有太多用处,而且每个本身都相当复杂。

设计师都是网络类型,看起来“导航”范式最接近他们想要的,但面包屑式导航栏却不是。

    如果我设置了 UINavigationController,我可以在视图中使用任意按钮来驱动它吗? 一般来说,是否可以通过编程方式换出视图的内容? 如果是这样,我需要注意什么? (例如,在 Java 中,如果您更改 JPanel 的内容,您需要确保它得到重新验证和重新绘制。)

这里的所有 ios 新手,来自 Java 世界,非常感谢超级明确的建议。使用 Monotouch,但乐于接受 Obj-C 帮助和翻译。 :)

【问题讨论】:

【参考方案1】:

很难告诉你如何只用这些信息来设计你的应用,所以我假设你想做一个像 UINavigation 控制器这样的向下钻取的东西。

1- 是的,您可以使用 PushViewController() 和 PopViewController() 等方法从其他 ViewController 驱动 UINavigationController。如果需要,您还可以隐藏工具栏或某些工具栏按钮。你可以找到一些great examples here。

2- 是的,您可以更改视图的内容。视图包含其他视图,您可以根据需要添加和删除它们。

3- 需要注意的主要事情是确保更新视图的调用在 InvokeOnMainThread(()=>) 调用中完成。 More info here.

【讨论】:

即使您的 UI 不是完全分层的,您是否仍然使用 UINavigationController?我的应用程序在多个路径中分支,甚至可能循环回以前的视图,所以我不确定 Nav-View 是否是最好的方法。建议? UINavController 迫使您进入一个非常具体的模式:深入研究数据。其他控制器有其他模式: UITableViewController 强制您进入项目列表,而 UITabBarController 进入不同的选择。您还可以创建自己的自定义控制器,根据需要切换视图。不过,在投入新风格之前请三思:苹果故意创造了这些控制器,可能是在多年研究必要之后。如果现有的控制器不适合您,则创建其他控制器是正常的。

以上是关于在没有 UITabBar 或 UINavigationBar 的情况下在 iOS 中编排多个视图的最佳方法?的主要内容,如果未能解决你的问题,请参考以下文章

UITabBar 去除黑色背景

自定义透明UITabBar

有没有办法调整 UITabBar 按钮项的宽度以适应屏幕上超过 5 个按钮?

使用 UITabBar 或 UIToolBar

删除 UITabBarItem

iOS:在没有 UITabBarController 的情况下从用户界面实现 UITabBar