0

私が知っている限り、私は xib ファイルを持っていないので、ストーリーボードで作業しています。私がやりたいことは、アプリの起動時に、過去にデータベースに何かが書き込まれたかどうかを確認し、そうでない場合は、標準ビューではないビューを開きたいということです。(データベースが空でない場合は、標準ビューであるため、別のビューを開く必要があります。)

私がこれまでに試したこと:(viewDidLoad/viewDidAppearで)

ViewController *vs = [Viewcontroller new];
[self presentViewController:vs animated:YES completion:nil];

これにより、黒い画面が表示されます。何も起こらず、真っ黒のままです。次に、セグエを実行しようとしましたが、これによりビューが何度も開かれます。

これを行うための一般的/標準的な方法はありますか?

どうもありがとうございました!

4

1 に答える 1

0

この場合、 Storyboard インスタンスから UIViewController インスタンスをインスタンス化できます。

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"YourStoryboard" bundle:nil];
UIViewController *newController = [storyboard instantiateInitialViewController];

これは、その StoryBoard インスタンス内の最初のビュー コントローラーから開始することを前提としています。

これを条件と組み合わせて、次のことを実行できます。

UIViewController *newViewController = nil;
if([self databaseHasNewInformation])
{

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"NewDataStoryboard" bundle:nil];
    newController = [storyboard instantiateInitialViewController];
}
else
{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"NoNewDataStoryboard" bundle:nil];
    newController = [storyboard instantiateInitialViewController];
}

// Present New View Controller (this example assumes a navigation controller)
[self.navigationController pushViewController:newController animated:YES];

StoryBoard の最初のビュー コントローラーではないビュー コントローラーをインスタンス化する場合は(id)instantiateViewControllerWithIdentifier:(NSString *)identifier、呼び出す代わりに、別のインスタンスを利用することができます。instantiateInitialViewController

于 2012-11-01T18:57:35.743 に答える