Iphone “后退”按钮返回到它的来源地的另一个UITableViewController

Iphone “后退”按钮返回到它的来源地的另一个UITableViewController,iphone,instant-messaging,Iphone,Instant Messaging,假设我有UITableViewController A和UITableViewController B。 A和B都加载UIView C。 在C中的back按钮上,我如何确保它总是返回到B,而不是它来自哪里 以下是一个具体的例子: A=iphone skype中的联系人窗口。 B=聊天窗口,每一行都是与不同人员的聊天历史记录 C=聊天窗口显示与同一人的对话 可以从A或B加载C,但我希望聊天窗口(C)上的backbutton(后退)按钮仅返回聊天窗口(B) 干杯。您将始终返回到名为pushViewC

假设我有UITableViewController A和UITableViewController B。 A和B都加载UIView C。 在C中的back按钮上,我如何确保它总是返回到B,而不是它来自哪里

以下是一个具体的例子: A=iphone skype中的联系人窗口。 B=聊天窗口,每一行都是与不同人员的聊天历史记录 C=聊天窗口显示与同一人的对话

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


干杯。

您将始终返回到名为
pushViewController

您是否可以让A向B发送一条消息,使B呼叫
pushViewController


我可能不理解您的体系结构,但我相信这会起作用。

您会发现这很难实现,主要是因为这是一个糟糕的UI设计,API不支持它

您的用户将期望一个后退按钮将他们“返回”到上一个视图,就像在他们使用的所有其他应用程序中一样。转到任何其他视图都会使它们更加混乱,因为它不是层次结构,而是循环。用户有时会转到B-->C-->B,但有时会转到A-->C-->B-->C。(他们如何回到A?)

与C中的后退按钮不同,您应该在右侧有一个按钮,无论您如何到达C,它都会将您带到B。相同上下文中的同一个按钮应始终产生相同的结果。用户不必记住他们处于什么不可见模式来预测按钮的动作


Edit01:(对以下评论的回应) (这是我的全部想法,所以请少说一点。) 您需要放弃使用导航控制器,而是自己管理视图。您需要通过选项卡栏交换视图,在每个选项卡的视图属性中用C视图替换A和B视图

我认为您必须从不可见的主视图开始,然后添加选项卡栏。在主视图控制器中,为每个视图创建属性/出口。在每个视图中,都有一个链接到主视图控制器的属性/出口。然后在A和B中使用C视图调用方法的“后退按钮”(我强烈建议您将其标记为“聊天”),然后调用主视图控制器中的方法,该方法(1)从选项卡A或选项卡B中删除C视图(2)将选项卡切换到B选项卡,然后(3)将视图B加载到选项卡B中

我无法强调我认为这个设计有多笨拙。其他应用程序是否使用它并不重要。根据我的经验,大公司更容易犯界面错误,因为他们的营销部门希望UI看起来独特

相比之下,看看手机应用程序如何处理相同的情况。无论您使用哪个选项卡拨打电话、收藏夹、联系人、键盘等,通话结束后,您仍然会返回该选项卡的视图。如果您想用另一个方法进行调用,只需点击相应的选项卡


忽视他人的坏榜样。为什么要花这么多时间和精力去重现别人的错误呢?

如果你真的想这样做,你可以在B中创建一个方法来推C,然后从a中推B(没有动画),然后调用推C的方法。当然,当你把C推到B时,a仍然会在它下面。

我从他那里得到了答案,并遵循了他的建议,它的工作原理是:

来自Sukima:
我相信(虽然我没有真正的想法)skype和Beejive等应用程序正在做的是,当视图A需要视图C时,它会通知您的UITabBar移动到聊天选项卡,然后推入详细视图C。这实际上更好,因为这样用户将通过选项卡栏已更改突出显示的事实看到视图已更改。from:我进一步阅读了stackoverflow线程。我现在明白你的要求了。

您好:A和B是UITableController,每个都在UITableController的选项卡上。你可以在标签栏上点击A返回A。这可能是一个糟糕的设计,但这是Skype和Ebuddy在iphone上的做法,你可以从联系人/好友中选择一个朋友进行聊天,一旦进入聊天窗口,后退按钮将返回聊天,而不是联系人/好友。这篇文章是从我在这个链接上的另一篇文章简化而来的:根据你的建议,如果你读了我最后的评论,因为A和B都是UITableViewController,我如何确保C总是回到B?回复Edit01 Hi-TechZen:非常感谢你的回复,我认为你的解决方案会奏效,采纳你的建议将极大地改变我的应用程序结构。我希望这不是唯一的解决方案。这种UI设计对于用户来说是直观的,问题在于实现层。对于手机应用程序如何处理“相同”的情况,您的看法并不完全正确。如果您进入手机->选择一个人->点击文字信息->返回按钮显示“信息”而不是联系人。因此,这正是A->C->B->C->B的情况。非常感谢您的输入,我现在会记住您的解决方案。按照您在手机应用程序中描述的顺序,手机应用程序实际上是在启动SMS应用程序之前退出的。SMS应用程序将打开手机应用程序发送的联系人的消息详细信息窗口。后退“消息”按钮将用户带回他们自己打开SMS应用程序时可能看到的视图。要返回到手机应用程序,用户必须退出短信并打开手机应用程序。然而,如果你认为你的设计是最好的/最熟悉的界面,那就去做吧。这是有道理的。难怪加载消息应用程序需要一段时间。谢谢TechZen谢谢你的建议,可能无法让a向B发送消息。这是粗略的设计,如果你感兴趣,谢谢,我需要考虑你的解决方案。