2

これに対する答えを探し回っていますが、決定的な解決策を見つけることができないようです - 誰かがここで助けてくれることを願っています!

iPhone 用のマルチビュー アプリを作成しています。「MainViewController」という UIViewController を作成しました。これは、必要に応じて他のビューにロードされます。画面間のナビゲーションはかなり多いので、MainViewController に "ViewSwitcher" メソッドを用意して、子ビュー コントローラーが呼び出してビューを別の子ビューに切り替えるように要求できるようにします。

子コントローラーから「ViewSwitcher」メソッドを呼び出すにはどうすればよいですか? 現在、各子ビュー コントローラーに UIView *"parent" プロパティを作成し、最初に子ビューを読み込むときにこれを設定することで、これを実現することができました。次に、[parent ViewSwitcher] を使用してメソッドを呼び出すことができます。これは少しぎこちないように思えます。恐ろしい再帰構造を作成しているのではないかと心配しています。より良い方法はありますか?

前もって感謝します。

4

2 に答える 2

3

これは不格好に見えるものですが、一般的な考え方を示しているはずです:

NSArray *viewControllerArray = [self.navigationController viewControllers];
int parentViewControllerIndex = [viewControllerArray count] - 2;
[[viewControllerArray objectAtIndex:parentViewControllerIndex] setBackBarButtonItemTitle:@"New Title"];

#defineこれの多くはマクロで簡単に置き換えることができます:

#define CurrentParentViewController [[self.navigationController viewControllers] objectAtIndex:[[self.navigationController viewControllers] count] - 2]

その後、次のように使用できます。

[CurrentParentViewController setBackBarButtonItemTitle:@"New Title"];

ナビゲーション スタックの一番下のビュー コントローラーでこれを呼び出すと、明らかにクラッシュして焼き付きますが、このアプローチを使用している場合はおそらくわかります。たとえば、[[self.navigationController viewControllers] count]これを実行できることを確認するために呼び出すことができます。

于 2009-11-24T07:44:12.950 に答える
0

シングルトン オブジェクトを作成できます。このcocoawithlove の記事は、このトピックに関してすばらしい仕事をしています。

于 2009-11-24T01:00:11.270 に答える