假设我有 UITableViewController A 和 UITableViewController B。A 和 B 都加载 UIView C。在 C 的后退按钮上,如何确保它总是返回到 B,而不是它来自的地方?

这是一个具体的例子:A=iPhone Skype 中的联系人窗口。b =聊天窗口,每行是一个聊天历史记录,c =聊天窗口与同一个人显示对话。

C 可以从 A 或 B 加载,但我希望聊天窗口 ( C ) 上的后退按钮仅返回到聊天 (B) 窗口。

干杯。

有帮助吗?

解决方案 4

我得到了答案 谷歌群组 并按照他的建议,它有效:

从苏奇马出发:我相信(虽然我不太清楚)像 Skype 和 Beejive 这样的应用程序正在做的是,当视图 A 想要视图 C 时,它会向你的 UITabBar 发送消息,让其移动到聊天选项卡,然后推入详细视图 C。这实际上更好,因为用户将通过选项卡栏已更改突出显示这一事实看到视图已更改。从:我进一步阅读了 stackoverflow 线程。我现在明白你的要求了。

其他提示

您会觉得这很难大幅实现,因为这是一个糟糕的UI设计和API不支持它。

您的用户会期望一个返回按钮,把他们“回”到先前的观点,就像在他们使用的所有其他应用程序。去到任何其他视图将它们混淆更是这样,因为它不是一个层次,但一个循环。用户有时候会去乙 - >ç - > B,而其他时间,A - “ç - ”乙 - >℃。 (他们如何找回?A)

相反在C后退按钮的,你应该有在右手侧始终把你到B不管如何在相同的上下文应该总是产生相同的结果得到了C的相同的按钮的按钮。用户不应该记住什么看不见的模式,他们都在预测什么动作的按钮都会有。


Edit01:(响应于下面的注释)

(这是所有我的头的顶部,从而把它与一粒盐。) 您需要使用导航控制器放弃,而是自己管理的意见。您将需要通过使用TabBar通过替换在每个选项卡中的视图属性中的A和B享有C查看交换意见了。

我想你将不得不开始与主认为是无形的,然后使用TabBar补充。在主视图控制器,为每个视图创建属性/出口。在各视图中,具有链接到主视图控制器的属性/出口。然后有“返回按钮”(我强烈建议你标记“聊天”)中A C视图呼叫的方法和B的然后调用在主视图控制器的方法:(1)去除任一选项卡A或C查看选项卡B(2)切换的标签到B标签,然后(3)负载查看B装入标签B.

我不能强调我多么笨拙觉得这样的设计。如果其他应用程序使用它没关系。在我的经验,大公司更有可能使接口犯错误,因为他们的营销部门希望的UI看起来是唯一的。

通过比较,看看手机应用程序如何处理同样的情况。不,你使用的标签来进行此事的电话,收藏夹,联系人,键盘等,你还回来该标签的观点,当调用完成。如果你想与其他方法的调用,您只需点击相应的标签。

忽略其他的不良例子。为什么花那么多时间和精力,试图重现别人的错误?

您永远清盘回到认为,所谓pushViewController

你能有一个发送B中导致B到呼叫pushViewController?点击留言 我可能不理解你的架构,但我相信会的工作。

如果你真的想这样做,你可以创建在B中的方法是推动C,那么从A推B(无动画),并调用推动C.当然,当你跳出C到B的方法中,仍然会下它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top