1

私はオブジェクティブ C の ipod アプリで xcode で作業しており、クラスの 1 つ (rootViewController) にフィールド (navigationController) があります。インスタンス化された rootViewController の navigationController を別のクラスから参照するにはどうすればよいですか? たとえば、FirstViewController.m クラスから navigationController を参照するにはどうすればよいでしょうか。

これがアプリケーションデリゲートを参照するための参照しか見つけることができないようです。

FirstViewController でアプリケーション デリゲートを参照する場合は、次のように言います。

MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate];

[delegate.navigationController pushViewController:childController animated:YES];

MyAppDelegate の代わりに rootViewController クラスに対してこれを行うにはどうすればよいですか?

4

2 に答える 2

0

1 つのオブジェクトは、他のオブジェクトへの参照を必要とします。これを実現する方法はたくさんあります。例えば:

  • 同じオブジェクトに両方を作成させ、両方を知っているので、お互いについて伝えます。
  • それらを同じペン先で作成し、通常の接続で接続します
  • オブジェクトの1つが他のものについて知っているペン先の所有者を持ちます

基本的に、これは、オブジェクトが相互に認識できるようにアプリケーションを適切に設計するだけの問題です。あなたがする魔法のようなことはありません。

于 2010-03-19T23:24:27.993 に答える
0

あなたが尋ねている質問に基づいて、スタックの上位にある UINavigationController でメソッドを呼び出したいようです。すべての UIViewController には、スタック上のこの ViewController の祖先である UINavigationController である navigationController のプロパティが既にあります。

したがって、ルートと呼ばれる RootViewController がある場合、ある時点でこれが行われました

FirstViewController * first = [[FirstViewController alloc] initWithNibName:@"FirstView" bundle:nil];
[self.navigationController pushViewController:first animated:YES];
[first release];

次に first.navigationController == root.navigationController

したがって、最初の呼び出しの内部では、最初 [self navigationController] に最初にプッシュされたものと同じナビゲーションコントローラーが提供されます。

于 2010-03-20T00:23:28.687 に答える