-1

ViewController の AppDelegate 1 つのパラメーターを取得する必要があります。

AppDelegate のルートではありません。

それを行うより速い方法は何ですか?委任?

4

2 に答える 2

0

まず、あなたのデザインに何かがひどく間違っています。それ以外の場合は、このようなことをする必要はありません。

第 2 に、VC 階層に関する関連情報が提供されておらず、これに対する一般的な解決策がありません。

ただし、いくつかの回避策/パッチがあります:

1)ストーリーボードを使用している場合は、次を使用できます:

UIStoryboard* sb = [UIStoryboard storyboardWithName:@"mystoryboard"
                                              バンドル:なし];
UIViewController* vc = [sb instantiateViewControllerWithIdentifier:@"ExampleViewController"];

2) ビュー コントローラー シングルトンを作成し、AppDelegate から直接アクセスできます。

3) ハッキーな方法: AppDelegate には @property (非アトミック、保持) UIVIewController *hackyViewController; があります。

hackyViewController.m でこれを行います

-(void)viewDidLoad{
    // スーパーコール

    YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate];
    YourAppDelegate.hackyViewController =self;
}

理想的には、UIVIewcontroller の parentViewController および childViewcontroller プロパティを使用してビューコントローラー階層をナビゲートし、インスタンスを取得する必要があります。また、すべての childViewcontroller をナビゲートする再帰関数を作成し、iSKindOf を使用してインスタンスをチェックして、探しているビューコントローラーを識別することもできますが、この方法はすべての iOS 構成では機能しません。

于 2014-03-23T04:11:04.660 に答える
0

それを VC のプロパティにすると、AppDelegate が必要に応じてアクセスできるようになります。

于 2014-03-23T01:25:23.070 に答える