ViewController の AppDelegate 1 つのパラメーターを取得する必要があります。
AppDelegate のルートではありません。
それを行うより速い方法は何ですか?委任?
ViewController の AppDelegate 1 つのパラメーターを取得する必要があります。
AppDelegate のルートではありません。
それを行うより速い方法は何ですか?委任?
まず、あなたのデザインに何かがひどく間違っています。それ以外の場合は、このようなことをする必要はありません。
第 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 構成では機能しません。
それを VC のプロパティにすると、AppDelegate が必要に応じてアクセスできるようになります。