2

如果我想要一个 MainViewController,那么 Xcode 中最好的方法是什么,它仅在用户登录时显示,否则会显示一个 LoginViewController,并且在(成功)登录 MainViewController 之后。

首先关注故事板:

  • (a) 有一个 LoginViewController(作为初始视图控制器),然后是 MainViewController
  • (b) 拥有 MainViewController(作为初始视图控制器)和到 LoginViewController 的连接,如果用户未登录,将使用该连接
  • (c) 与 (a) 类似,但在 NavigationController 中嵌入

或者还有其他可能吗?

专注于代码逻辑: 应该在 AppDelegate 或 Login- 各自的 MainViewController 中处理

如果有人有示例代码,那就太好了。

4

1 回答 1

2

(C)

我通常将 LoginVC 作为初始 VC。

  • 从逻辑上讲,已经登录的用户是“登录用例”的一个特殊子案例。因此,将其作为起点是有意义的。
  • 将 LoginVC 作为导航层次结构的基础也可以很容易地使用 注销popToViewController:animated,无论它们在导航堆栈中的哪个位置。

处理从 LoginVC 内部的转换到 MainVC,而不是应用程序委托。这样,您将拥有一组代码来进行转换,唯一的区别是在一种情况下用户提供凭据,而在另一种情况下,凭据被缓存。

确认凭据后,使用您的 segue 移动到 MainVC:

[self performSegueWithIdentifier:@"MainVCViewSegue" sender:nil];
于 2013-02-15T21:48:27.420 回答