0

私は現在、署名プロセスが含まれるアプリを開発しています。これはタブバー アプリですが、簡単にするために 2 つのタブのみの例を使用します。ホームと設定。

ホームでは、ユーザーのホーム画面にさまざまな写真と最後のメッセージが表示されます。ただし、ユーザーがログインしていない場合は、デフォルトの匿名ビューがあります。

私の質問は、1 つのビュー コントローラーと 2 つの異なる複雑なビューをどのように操作するのかということです。アプリ起動後のホームビューコントローラーはデフォルトです。私はストーリーボードを使用しているため、HomeViewController にできるビューコントローラーは 1 つだけです。(明らかに :))

1つのView Controllerで複数のUIViewを実行し、グローバル変数(NSUserDefaults)に基づいてそれらのビューを非表示/表示する可能性について知っています。問題は、両方のビューに多くのアウトレットがあることです。(スクロールビュー、テーブルビューなど)。そのため、UIView でこれらすべてのアウトレットをプログラミングするのは非常に困難であり、多くの冗長性が存在します。(ログインしたユーザーはログインしますが、未登録ユーザーのビューを含むすべての UIView のデータをダウンロードする必要があります)。

ユーザーがログインしているかどうかに基づいて、2つのView Controllerを作成し、1つを提示する方が簡単です.(appdelegateのapplicationdidfinishloadingでNSUserDefaultsディクショナリを確認してください)

4

2 に答える 2

1

HomeViewController多くのView Controllerを制御するコントローラーになるように実装できます。UINavigationControllerhow andUITabViewControllerコントロール many viewControllersand which viewControlleris visibleと同じです。

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 dev lib からのリンクです: http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html

于 2013-04-16T13:24:51.107 に答える
0

私はこのようにします。2 つの ViewController があり、1 つは DefaultViewController で、もう 1 つは LoginViewController です。ログインしているかどうかを確認し、rootViewController を表示する viewController として設定します。

ところで、ID やパスワードなどのユーザー情報を保存する場合は、NSUserDefaults ではなくキーチェーンを使用してください。

于 2013-04-16T13:38:14.270 に答える