0

私は本当にこの問題に悩まされており、誰かが私を正しい方向に向けることができれば幸いです...

メイン ナビゲーション用のタブ バーを使用して iOS アプリケーションを構築しています。

ユーザーは、メイン画面とタブ ​​バーを表示する前にサインアップ/サインインする必要があります。

ユーザーは、Facebook コネクトを使用してサインインとサインアップの両方を行うことができます。

アプリは独自の API と通信します。

現在... UITabBarController の初期ビューが読み込まれると、現在のユーザーが存在するかどうかがチェックされ、存在しない場合はサインイン画面が表示されます。

if (sessionID == (id)[NSNull null] || sessionID.length == 0){
    NSLog(@"session ID was null");
    SHOW_SIGN_IN_SCREEN;
}

#define SHOW_SIGN_IN_SCREEN SignInController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"SignInScreen"];\
[self presentViewController:controller animated:NO completion:nil];

サインイン画面から...ユーザーは「Facebookでサインイン」ボタンをタッチするか、サインアップ画面に続く新しいアカウントを作成できます。サインアップ画面には、ユーザーが入力するためのフォームがあります。または、[Facebook でサインアップ] ボタンをタップして、Facebook グラフによって提供される Facebook の詳細を使用してアカウントを作成することもできます。

Facebook のコールバックはすべて、私が行き詰っているアプリ デリゲートによって処理されます。

API は、アプリから送信されたユーザー資格情報が新しいユーザーのものか既存のユーザーのものかを気にしません。いずれの場合も、API はアプリが続行するための有効なセッション ID を返します。

API が応答したら、アプリ デリゲートはユーザーをメインのタブ バー ビュー コントローラーに戻します。

現時点では、これを AppDelegate に持っています

// app delegate
-(void)segueToMainTabController
{
    NSLog(@"segueToMainTabController");
    SignInController *controller = (SignInController *)[self.window.rootViewController presentedViewController];
    [controller segueToWelcomeScreen];
}

// sign in controller 
-(void)segueToWelcomeScreen
{
    NSLog(@"segueToWelcomeScreen");
    [self performSegueWithIdentifier:@"SignInToMainTabBar" sender:self];
}

呼び出されていますが、セグエを実行していません...

このセグエが実行されていない理由を誰かアドバイスできますか?

ありがとう

4

1 に答える 1

0

AppDelegate の初期ビューをハイジャックする必要があるアプリがあるので、似たようなことができるかもしれません。あなたの条件を使って、多分あなたの中にこのようなものを入れてみてくださいapplication:didFinishLaunchingWithOptions:

if (sessionID == (id)[NSNull null] || sessionID.length == 0){
    // whatever you need to do to initialize for the login screen
    // you should make the login view the initial view in your storyboard
}
else { // hijack the initial view to show the tab bar   
    UIStoryboard *storyboard = self.window.rootViewController.storyboard;
    MyTabViewController *tabViewController = [storyboard instantiateViewControllerWithIdentifier:@"MyTabViewController"];

    self.window.rootViewController = tabViewController;
    [self.window makeKeyAndVisible];
}

それが役立つことを願っています。

于 2012-05-30T00:35:43.523 に答える