0

我目前正在开发涉及签名过程的应用程序。它是标签栏应用程序,但为简单起见,我将使用只有 2 个标签的示例。主页和设置。

在家里,用户会在他的主屏幕上看到各种照片和最后的消息。但是,当用户未登录时,有默认的匿名视图。

我的问题是,你们如何使用一个视图控制器和两个不同的复杂视图。启动应用程序后,主页视图控制器是默认的。我正在使用故事板,所以只有一个视图控制器可以是 HomeViewController。(显然 :))

我知道在一个视图控制器上执行多个 UIView 并基于全局变量(NSUserDefaults)隐藏/显示这些视图的可能性。问题是,这两种观点都有很多出路。(滚动视图、表格视图等)。因此,一方面,在 UIView 上对所有这些插座进行编程将是硬核,并且会有很多冗余。(登录用户将登录,但所有 UIViews 的数据——包括未注册用户的视图都必须下载)。

根据用户是否登录,创建两个视图控制器并呈现一个会更容易。(只需检查 appdelegate 的 applicationdidfinishloading 中的 NSUserDefaults 字典)

4

2 回答 2

1

您可以实现这样HomeViewController一个控制器来控制许多视图控制器。与如何UINavigationControllerUITabViewController控制许多viewControllers和哪些viewController是可见的相同。

您的 HomeViewController 看起来像这样:

@interface HomeViewController : UIViewController

@property (strong, nonatomic) UIViewController *authenticatedVC;
@property (strong, nonatomic) UIViewController *anonymousVC;

- (void)showAuthenticatedView;
- (void)showAnonymousView;

@end

@implementation HomeViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    // init your VCs
    self.authenticatedVC = [[UIViewController alloc] init];
    self.anonymousVC = [[UIViewController alloc] init];

    // show your initial VC (assuming anonymousView is you default)
    [self.view addSubview:self.authenticatedVC.view];
}

- (void)showAuthenticatedView
{
    // remove current view
    [self.authenticatedVC.view removeFromSuperView];

    // display authenticatedView
    [self.view addSubview:self.authenticatedVC.view];
}

- (void)showAnonymousView
{
    // remove current view
    [self.authenticatedVC.view removeFromSuperView];

    // display showAnonymousView
    [self.view addSubview:self.anonymousVC.view];
}

@end

** 更新:这是 ios 开发库中关于创建自定义容器视图控制器的链接:http: //developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html

于 2013-04-16T13:24:51.107 回答
0

我会这样做。你有两个 ViewController,一个是 DefaultViewController,另一个是 LoginViewController。检查是否登录,并将 rootViewController 设置为您要显示的 viewController。

顺便说一句,当您想存储用户信息(如 id 和密码)时,请使用钥匙串而不是 NSUserDefaults。

于 2013-04-16T13:38:14.270 回答