3

UIStoryBoard内に多数のビューコントローラーが定義されています。簡単にアクセスできるように、すべてを1か所にまとめておくのが好きです。ただし、アプリ内の別の場所でViewControllerのコピーをインスタンス化する必要があるという問題が発生しました。ストーリーボード内で定義されているUIViewControllerのインターフェイスを使用して、プログラムでUIViewControllerを作成することは可能ですか?

そうしないと、そのコントローラーのストーリーボードビューを別の.xibファイルにコピーして、ビューを手動でロードする必要があります。

ご説明ありがとうございます!

4

1 に答える 1

4

うん、全然悪くないよ! -instantiateInitialViewControllerあなたが探しているものです。

私がよく使うヘルパーは次のとおりです。

- (void) loadStoryboard:(NSString *)storyboardName animated:(BOOL)animated
{
  if ([_currentStoryboard isEqual:storyboardName])
  {
    return;
  }

  _currentStoryboard = storyboardName;

  UIStoryboard* storyboard = [UIStoryboard storyboardWithName:storyboardName bundle:nil];
  UIViewController* newRootController = [storyboard instantiateInitialViewController];

  if (!animated)
  {
    self.window.rootViewController = rootController;
    return;
  }

  newRootController.view.alpha = 0.0;
  [self.window addSubview:newRootController.view];

  [UIView animateWithDuration:0.5 animations:^{
    newRootController.view.alpha = 1.0;
  } completion:^(BOOL finished) {
    self.window.rootViewController = newRootController;
  }];
}

このバリアントは、あなたのゴミ捨て場用に設定されていますが、AppDelegateほとんどの状況に簡単に適応できるはずです.

于 2012-04-24T01:32:10.250 に答える