0

これが重複した質問の場合は申し訳ありませんが、多くの質問を見て、正しい答えが見つかりませんでした.

基本的に、アプリを初めて起動する場合は、ハウツー画面を含む UIViewController をロードする必要があります。最初の起動でない場合は、Tab Bar Controller を読み込みます。

これを行うには、最初のビュー コントローラーとして UIViewController を用意し、タブ バーと uiviewcontroller へのモーダル セグエを使用します。

ここに画像の説明を入力

2 つのモーダル セグエは、pushTabBar と pushHowToUse と呼ばれます。

「firstviewcontroller」のコードは次のとおりです。

@implementation FirstViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self isFirstRun];
    // Do any additional setup after loading the view.
}
- (BOOL) isFirstRun
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if ([defaults objectForKey:@"isFirstRun"])
    {

        [self performSegueWithIdentifier: @"pushTabBar" sender: self];

        return NO;

    }

    [defaults setObject:[NSDate date] forKey:@"isFirstRun"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    NSLog(@"right before");
    [self performSegueWithIdentifier: @"pushHowToUse" sender: self];



    return YES;
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"pushTabBar"]) {

        GetInfoViewController *getInfoViewController = segue.destinationViewController;
        NSLog(@"loadtabbar");

    }
    if ([segue.identifier isEqualToString:@"pushHowToUse"]) {

         TutorialViewController *tutorialViewController = segue.destinationViewController;
        NSLog(@"loadhowto");

    }
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

タブバーコントローラーに何をプッシュ/ロードすればよいかわかりません:

  GetInfoViewController *getInfoViewController = segue.destinationViewController;

読み込みたい最初のタブバーのビューコントローラーです。

私はこれを正しくやっていますか?ナビゲーション ルート コントローラーを使用する必要がありますか?

前もって感謝します

4

2 に答える 2

1

他のどのコントローラーを表示するかを決定することが唯一の目的である場合、FirstViewController は必要ありません (ところで、モーダル セグエ pushToTabBar の呼び出しは紛らわしい名前です。プッシュではなくプレゼンテーションを行っています)。タブ バー コントローラーの最初のタブにあるコントローラーの viewDidAppear メソッドでロジックを実行できます。初めて起動する場合は、TutorialViewController をアニメーションなしでモーダルに表示して、ユーザーが最初に目にするようにします。ユーザーがチュートリアルを完了したら、そのコントローラーを閉じると、最初のタブ ビュー コントローラーに戻ります。タブ バー コントローラーのインデックス 0 で、そのコントローラーからのセグエを TutorialViewController に接続する必要があります。

于 2013-08-14T04:56:04.713 に答える
0

タブ バー コントローラーからセグエを実行したほうがよいでしょう。そうすれば、モーダル プレゼンテーションを閉じることができ、チュートリアルのセグエが消えると、既にタブ バーにいます。

于 2013-08-14T02:01:20.087 に答える