0

ビューから実行するアプリデリゲートで関数を作成しましたが、戻って関数を再度実行すると、

<ResultViewController: 0x757dfc0> on <ViewController: 0x71325c0> whose view is not in the window hierarchy!

エラー

アプリデリゲートコードがビューコントローラーを開いています

コードは

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    ViewController *view1 = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];

    [self.window setRootViewController:view1];

    [self.window makeKeyAndVisible];

    return YES;
}
-(void)specify
{

    ResultViewController *res = [[ResultViewController alloc]init];

    CATransition *transition = [CATransition animation];
    transition.duration = 0.3;
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transition.type = kCATransitionPush;
    transition.subtype = kCATransitionFromRight;
    [self.window.layer addAnimation:transition forKey:nil];

    [self.window.rootViewController presentModalViewController:res animated:NO];

}
4

3 に答える 3

0

コードを実行していないのは、追加しようとしているウィンドウがビュー階層に存在しないためだと思います。ビューを作成して画面に追加しているだけです。実際の画面自体を取得する必要があります。

UIViewController *presentController = [[[[UIApplication sharedApplication] delegate] window] rootViewController]; のようなものを試してください。

ViewController *view1 = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];

[presentController presentViewController:view1 アニメーション:YES 完了:nil];

于 2013-01-21T13:18:49.420 に答える
0

クラスの作成中に、UIViewControllerその親クラスを作成します。

UIViewControllerオブジェクトの .view がないクラスの親クラスではないようです

于 2013-01-21T13:20:07.060 に答える
0

rootViewController の navigationController にモーダル ビュー コントローラを提示する必要があります。

[self.window.rootViewController.navigationController presentModalViewController:res animated:NO];

したがって、モーダル ビュー コントローラーを rootViewController に提示したい場合は、次のことを覚えておいてください。

ウィンドウに既存のビュー階層がある場合、新しいビューがインストールされる前に古いビューが削除されます。

モーダルviewControllerを表示する最初の試みはビュー階層を置き換えますが、self.window.rootViewControllerは変更されず、ウィンドウ階層にはもうありません。

またはそのようなもの。

于 2013-01-21T13:45:17.743 に答える