ios:与另一个视图的不同转场取决于前一个视图中使用的转场

ios: different segue to another view depending on the segue used in the previous view

抱歉,如果这有点不清楚 - 我是 iOS 编程方面的菜鸟。场景如下:

我有一个 LogInView、一个 CategoryView、一个 CheckerView、一个 WalkthroughView 和一个 LandingPageView。

用户从 LogInView 开始,根据应用的蓝牙状态,以及用户是否已注册,要么转到:

如果用户点击 CategoryView,根据他的蓝牙连接状态,他会转到其中一个(到目前为止,这部分工作正常):

要注意的是,CategoryView 将总是 通过 WalkthroughView,无论蓝牙是否打开。所以,这是我的故事板的样子:

一团糟,我知道。由于 LogInView 和 CategoryView 在某些时候都可以进入 CheckerView,因此我需要一种方法来检查使用了哪个转场,例如:

我隐约知道有一个 prepareForSegue 函数,但我还不知道如何使用它,也不知道该把它放在哪里(从上一页开始,还是在接收页面?)

有什么建议吗?谢谢

我的标准建议是,一旦应用程序状态变得复杂,就应该将其从视图控制器中移出并移到实际的数据模型对象中。

数据模型可以是您创建的自定义 class(可扩展性首选)。或者,在没有大量信息共享的情况下,您可以考虑将其放入 NSUserDefaults 并在需要时从那里读取。

听起来您正在测试条件以确定您将在何处继续。如果是这样,也许您可​​以测试条件(registered/unregistered、蓝牙 enabled/disabled)。根据各种条件,您可以使用 performSegueWithIdentifier 确定下一步去哪里,并使用 segue 标识符在 prepareForSegue 中设置下一个 ViewController,而不是 "looking back"看看你来自哪里。