2009-08-11 20 views
0

私は複数のView Controllerを持つアプリケーションを開始しています。一部のビューはナビゲーションコントローラの内部に表示されます。私は、ナビゲーションコントローラを作成し、別のインスタンス化されたビューコントローラを追加することができます。しかし、私がしたいのは、独自のビューを持つビューコントローラをインスタンス化するだけで、ナビゲーションビューコントローラのルートビューコントローラです。だから私は、ビューコントローラをインスタンス化するとき、私はそれがナビゲーションコントローラを作成し、それに "自己"を押したいと思います。私がそれをすると、私のシミュレータがクラッシュし、詳細が本当に理由を与えない。コンソールに何も表示されません。何か案は。私の理由は、単純にナビゲーションコントローラを作成した後、別のビューコントローラをルートビューコントローラとしてプッシュするビューコントローラを持たずにロジックを分離するためです。UIViewControllerがUINavigationControllerに自分自身を追加することができます

答えて

3

私はあなたの質問を正しく理解しているかどうか完全にはわかりません。ビューコントローラがナビゲーションコントローラにプッシュした場合、なぜそれが望ましいのでしょうか?とにかく、コード内のある時点(いずれかのアプリケーションデリゲートまたは別のビューコントローラ)でView Controllerをインスタンス化する必要があります。なぜあなたはそこにナビゲーションコントローラを作成し、あなたのVCをインスタンス化し、それをnavコントローラに押し込むことができませんか?私が見る限り、これは追加のView Controllerを作成することを含まない。

とにかく、使用されている場所(つまりプッシュされている)でビューコントローラを決定することはベストプラクティスではありません。この方法では、他のコンテキストで柔軟に使用できなくなります。できるだけゆるやかにコンポーネントを結合してみてください。

+0

私はあなたのポイントを見ます。私はちょうど私のアプリケーションを開始していると私のアイデアは、別のビューコントローラがこのビューコントローラを使用するために、それをインスタンス化することができ、それがナビゲーションコントローラになければならないかどうかのロジックは、 私は複数のView Controllerをどのように管理し、どのように対話するかをハッシュアウトしようとしています。ナビゲーションコントローラー、タブコントローラーなどを使用する基本的なこと以外に、これをカバーする多くの文書を見つけることができませんでした。 – Brian

+0

まあ、私が言及して忘れた別のポイント:あなたのナビゲーションコントローラは、何らかの親を所有していなければなりません。それはタブバーコントローラに追加されるか、アプリケーションデリゲートのメインビューコントローラとしてインスタンス化されるか、モーダルビューコントローラとして他のビューコントローラにプッシュされます。あなたのサブビューコントローラはそれをどうするのですか?誰がナビゲーションコントローラ(メモリ管理)を所有しますか? –

+0

"私のアイデアは、別のView Controllerがこのビューコントローラを使用するために、インスタンス化するだけで、ナビゲーションコントローラになければならないかどうかのロジックが親に透過的になるということでした」 - >これはこの場合、親はサブビューコントローラではなくナビゲーションコントローラを表示する必要があるからです。 –

関連する問題