1

プライマリ インターフェイスに UITabBarController を使用する iPhone アプリケーションがあります。このアプリケーションは、さまざまなタブから表示されるモーダル UINavigationControllers も多用します。

アプリケーション内のさまざまな場所からトリガーできる、モーダルに表示する必要がある ViewController があります。それをトリガーするすべてのviewController間でそれを作成して提示するコードを複製するのはひどい考えのようです。このコードを 1 か所にまとめて、viewController が表示したいところからトリガーしたいと思います。

この一元化された場所はどこにあるべきですか? 私のルート ViewController は UITabBarController であるため、あまり役に立ちません。また、ビュー機能を AppDelegate にまとめるのは嫌いです。

4

3 に答える 3

1

必要なビューを表示する機能を持つ新しいクラス ファイルを作成します。そうすれば、モーダル ビューを表示するコードを 1 回記述するだけで済み、それを使用する必要がある各ビューは、1 行のコードでヘルパー クラスの関数を呼び出すことができます。

@interface ApplicationHelper : NSObject {
}

+(void)showMyModalView:(UIViewController *)parentViewController;

@end

実装:

#import "ApplicationHelper.h"
#import "ViewController.h"

@implementation ApplicationHelper

+(void)showMyModalView:(UIViewController *)parentViewController
{
      ViewController *vc = [[ViewController alloc] init];

      [parentViewController presentModalViewController:vc animated:YES];
}
@end

次に、各View ControllerでApplicationHelperをインポートし、showMyModalViewメソッドを呼び出します

[ApplicationHelper showMyModalView:me];

これにより、すべてのビュー処理コードを別のファイルに保持して、アプリケーション デリゲートに渡すことができます。

于 2012-04-27T12:14:37.607 に答える
0

UIViewControllerを1つ作成し、そのデリゲートメソッドを実装できます。次に、次のようにViewControllerを表示できます。

[currentViewController presentViewController:yourViewController animated:YES];

また、View Controllerでイベントが発生すると、呼び出し元に委任されます。

この場合、「YourViewController」のコードを1回だけ記述し、必要な場所で再利用します。また、pushviewcontrollerを使用することもできます。

[self.navigationController pushviewcontroller:yourViewController animated:YES];
于 2012-04-27T09:53:04.077 に答える
0

参照を渡そうとしないでください。

いつalloc] init];でもどこでも使用できる新しいインスタンスです。

例えば。

MyModalViewController *controller = [[MyModalViewController alloc] init];
[self presentModalViewController:controller animated:YES];
于 2012-04-27T12:10:55.323 に答える