0

関連する質問を無回答に投稿しましたが、ここでは絞り込みを減らします。基本的に、私はオープンソースコードの一部を使用してFacebookスタイルを実装し、スライドしてタイプビューを表示しています。これの実装は、最初のスライディングビューコントローラーが起動時のアプリケーションウィンドウのルートビューコントローラーであるというパターンに依存しています。次に、すべてのView Controllerが、この便利な方法でそのスライディングViewControllerへの参照を取得できるようにします。

- (ECSlidingViewController *)slidingViewController
{
  UIViewController *viewController = self.parentViewController;
  while (!(viewController == nil || [viewController isKindOfClass:[ECSlidingViewController class]])) {
    viewController = viewController.parentViewController;
  }

  return (ECSlidingViewController *)viewController;
}

これが私の問題だと思います。モーダルで表示するビューコントローラ用に、このスライド式のスタイルメニューが必要です。ただし、モーダルに提示されたView Controllerは、その親ViewControllerに対してnullを返します。そのため、そのルートビューコントローラー(最初のスライディングビューコントローラー)への参照を取得しようとすると、取得できません。View Controllerを押すと機能しますが、それはアプリケーションに必要なフローではありません。このモーダルViewControllerを、現在のViewControllerの子として追加できればうまくいくと思いました。しかし、試してみると、すでにアクティブになっているビューコントローラーをモーダルに表示しているという例外が発生しました。誰かがこれを解決する方法を提案できますか?

編集:これは私がやろうとしている種類のことの例です

4

2 に答える 2

0

私たちの議論から、それはビューベースのアプリケーションであると推論することができます。したがって、要件に従ってスーパービューにサブビューを追加および削除する必要があり、そのためにビューを追跡するクラスを作成します。また、ビューをモーダルに表示する代わりに、次のようにサブビューとして追加することができます:-

[self.view addSubView:viewController.view];

あなたはbringSubViewToFrontそれを一番上に持ってくるために使うことができます。それを管理するためにこのリンクを見てください

于 2012-05-15T18:08:51.380 に答える
0

私はこのツールを使用して同じ効果を達成し、実装がはるかに簡単であることに気づきました。http://cocoacontrols.com/controls/iiviewdeckcontroller

于 2012-06-13T23:37:23.510 に答える