0

ユーザーがアプリの使用を開始する前に、ユーザー調査を取得するために取り組んでいます。これは通常、調査用のデータのコレクションです。

私の問題は、mainviewcontroller の上にサブビューを追加することです。

最初のスクリーンショットでわかるように、2 つの subviewcontroller があります。メインビューコントローラーに最初のサブビューを追加したいと思います。ユーザーが次のカスタマイズされたボタンをクリックすると、最初のサブビューが消え、メインビューコントローラーの上部に2番目のサブビューが表示されます。

firstsubview は次のように実装されます。

    CGRect rect = [firstSurveyViewController.view frame];
    rect.origin.x = 5;
    rect.origin.y = 5;
    [firstSurveyViewController.view  setFrame:rect];
    [self.view addSubview:firstSurveyViewController.view];

しかし、ユーザーが次のボタンをクリックしたときに、最初のサブビューを削除して2番目のサブビューを追加したいと考えています。どうすれば実装できますか?

最初のサブビュー secondSubView mainViewController + mainViewController

4

3 に答える 3

2

モーダル ビュー コントローラーを作成するには、次の 2 つの実際のオプションがあります (NDA の下でクールなものを無視します)。

  1. Container View Controller パターンを使用して、内側の View Controller をその親に挿入します。

  2. AppDelegate で行う場合と同様に、そのビュー コントローラーを使用して新しいウィンドウを追加します。ウィンドウを作成し、子をルート ビュー コントローラーとして追加し、それをキーにして可視にします。UIAlertViewこれは、アプリに対して同様の動作を実行するために実際に行うことです。

あなたの場合に何が良いとは言えませんが、私はコンテナー ビュー コントローラーの経験が豊富なので、ハイライトを紹介します。子ビューを追加するには、親ビュー コントローラーで次の手順 (上記のリンクから) が必要です。

- (void) displayContentController: (UIViewController*) content;
{
    [self addChildViewController:content];                 // 1
    content.view.frame = [self frameForContentController]; // 2
    [self.view addSubview:self.currentClientView];         // 3
    [content didMoveToParentViewController:self];          // 4
}

この意志:

  1. 子ビュー コントローラーを追加します。
  2. フレームを好きなように設定します。これはself.view.bounds、スペース全体を占めるようにしたい場合です。
  3. ビューをその親に追加します。
  4. 追加されたことを子View Controllerに通知します。

子View Controllerを削除するには、リンクから反対のことを行います:

- (void) hideContentController: (UIViewController*) content
{
   [content willMoveToParentViewController:nil];  // 1
   [content.view removeFromSuperview];            // 2
   [content removeFromParentViewController];      // 3
}

この意志:

  1. 子View Controllerに、それが消えることを通知します。
  2. そのビューをビジュアル スタックから削除します。
  3. 親から削除します。
于 2013-07-12T16:52:58.497 に答える
1

2 つのオプションがあります。

  1. 両方のコントローラーをモーダル コントローラーとして使用します。最初のコントローラーで [次へ] をタップした後、それを閉じて、2 番目のコントローラーをモーダルに呼び出します。

  2. もう 1 つのはるかに優れたオプション (私の意見では) は、 modal を使用して、これら 2 つの一連のコントローラーを次々に提示することUINavigationControllerです。コントローラーをナビゲーション コントローラーにプッシュできます。完了したら、それを閉じてメイン コントローラーを表示できます。

編集

この投稿を参照してください。

于 2013-07-12T16:33:36.187 に答える